@meowdown/core 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -59,6 +59,7 @@ const markdown = docToMarkdown(editor.state.doc)
59
59
  | `Mod-E` | Inline code | `` `code` `` |
60
60
  | `Mod-Shift-X` | Strikethrough | `~~strikethrough~~` |
61
61
  | `Mod-Shift-H` | Highlight | `==highlight==` |
62
+ | `Mod-K` | Link | `[text](url)` |
62
63
  | `Mod-1` | Heading 1 | `# heading` |
63
64
  | `Mod-2` | Heading 2 | `## heading` |
64
65
  | `Mod-3` | Heading 3 | `### heading` |
@@ -71,7 +72,7 @@ const markdown = docToMarkdown(editor.state.doc)
71
72
 
72
73
  ## Round-trip fidelity
73
74
 
74
- `checkRoundTrip(markdown)` reports how faithfully markdown survives a parse-then-serialize round trip: `'exact'` (byte-identical modulo the trailing newline), `'normalizing'` (same non-blank lines, only blank-line layout differs), or `'lossy'` (a non-blank line changed, e.g. a closing ATX hash sequence or unaligned table columns). Hosts that keep markdown on disk can gate saves on it, opening lossy files read-only so a save never rewrites content.
75
+ [`checkRoundTrip(markdown)`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-checkRoundTrip) reports how faithfully markdown survives a parse-then-serialize round trip: `'exact'`, `'normalizing'`, or `'lossy'`. Hosts that keep markdown on disk can gate saves on it, opening lossy files read-only so a save never rewrites content.
75
76
 
76
77
  ## Styling
77
78
 
@@ -87,7 +88,7 @@ meowdown's CSS is wrapped in a cascade layer, `@layer meowdown` (with sub-layers
87
88
  @import '@meowdown/core/style.css';
88
89
  ```
89
90
 
90
- Two things the variable list cannot show: `--meowdown-gutter` is the horizontal editor padding, applied to the editable root's `.meowdown-content` class (set by `@meowdown/react`), not `.ProseMirror`, so the block handle's drag preview stays unpadded; floating UI such as the block handle lives inside it, so keep it at least `3.5rem`. The selection variables (`--meowdown-selection`, `--meowdown-node-outline`, `--meowdown-node-selection`) are standalone, not derived from `--meowdown-accent`, so selection can be restyled independently.
91
+ Two things the variable list cannot show: `--meowdown-gutter` is the horizontal editor padding, applied to the editable root's `.meowdown-content` class (set by `@meowdown/react`), not `.ProseMirror`, so the block handle's drag preview stays unpadded; floating UI such as the block handle lives inside it, so keep it at least `3.5rem`. A headless mount (like the quick start above) has no `.meowdown-content`, so add that class to the mount element (or your own padding) yourself. The selection variables (`--meowdown-selection`, `--meowdown-node-outline`, `--meowdown-node-selection`) are standalone, not derived from `--meowdown-accent`, so selection can be restyled independently.
91
92
 
92
93
  Tags (`#tag`) render as pills via the `.md-tag` class, tinted from `--meowdown-accent`. Wire click handling with `defineTagClickHandler(({ tag, event }) => ...)` (or `@meowdown/react`'s `onTagClick` prop); `tag` is read from the rendered text without the leading `#`.
93
94
 
@@ -97,17 +98,19 @@ Markdown links (`[text](url)`) render the label as an `<a href>` with the `.md-l
97
98
 
98
99
  Bare URLs autolink without `[text](url)` brackets and share the same `.md-link` rendering and click handling: a scheme URL (`https://example.com`), an angle autolink (`<https://example.com>`), a `www.` host (`www.example.com`), an email (`me@example.com`), and a bare domain (`google.com`, `sub.domain.io/path`). Bare domains are matched against a curated list of common TLDs, so file names and prose keep their dots without linkifying (`README.md`, `node.js`, `i.e.` stay plain text); reach for `[text](url)` or `<url>` to link anything off that list. Autolinks are derived live from the text, so editing one re-evaluates it; the caret sitting inside a link never un-links it.
99
100
 
100
- Inline images (`![alt](src)`) stay literal text and render in place via a mark view, with the raw `![alt](src)` hidden in hide and focus modes. Add it with `defineImage({ resolveImageUrl, onImagePaste })` (or `@meowdown/react`'s image props). `resolveImageUrl` is optional and defaults to showing http(s) URLs as-is. Wire click handling with `defineImageClickHandler(({ src, alt, event }) => ...)` (or `@meowdown/react`'s `onImageClick` prop).
101
+ Inline images (`![alt](src)`) stay literal text and render in place via a mark view, with the raw `![alt](src)` hidden in hide and focus modes. Add it with [`defineImage`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineImage) (or `@meowdown/react`'s image props) and wire click handling with [`defineImageClickHandler`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineImageClickHandler) (`@meowdown/react`'s `onImageClick` prop).
102
+
103
+ Pasted or dropped files persist through [`defineFilePaste`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineFilePaste) (or `@meowdown/react`'s `onFilePaste` prop): the handler persists each file and returns its markdown destination. An image (`image/*` MIME type) inserts `![](src)`; any other file inserts a `[name](src)` link; multiple files insert one link per line, in the order they appear in the drop. Without `onFilePaste`, file events are left to the browser's default handling.
101
104
 
102
105
  Rendered images are resizable: drag the corner handle and the chosen size is written back into the source as a trailing comment, `![alt](src)<!-- {"width":320,"height":240} -->`, which round-trips as plain Markdown. A comment immediately after an image is folded into its mark and drives the image's `width` and `height` attributes, so the box keeps its dimensions before the image loads; any other comment stays literal text.
103
106
 
104
- Pasting a lone tweet or YouTube link can auto-embed it. `defineEmbedPaste()` (or `@meowdown/react`'s `embedPaste` prop) rewrites the pasted link to `![](url)` so it renders as an embed; one undo turns the embed back into the raw link. It is not part of `defineEditorExtension`; add it explicitly.
107
+ Pasting a lone tweet or YouTube link can auto-embed it: [`defineEmbedPaste`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineEmbedPaste) (`@meowdown/react`'s `embedPaste` prop, on by default).
105
108
 
106
- Pasting rich-text HTML from a browser (a bullet list, **bold**, a link, ...) converts it to Markdown so the formatting survives instead of arriving as plain text. `defineHTMLPaste()` (applied by default in `@meowdown/react`) rewrites the clipboard's `text/html` through the unified (rehype / remark) pipeline and reparses the Markdown with the editor's schema; meowdown's own clipboard (tagged `data-pm-slice`) and any paste landing in a code block are left to the default path. Going the other way, `defineMarkdownCopy()` serializes copied content to Markdown for the clipboard's `text/plain` flavor, so pasting into a plain-text field keeps list markers and block structure. Neither is part of `defineEditorExtension`; add them explicitly.
109
+ Pasting rich-text HTML from a browser (a bullet list, **bold**, a link, ...) converts it to Markdown so the formatting survives instead of arriving as plain text: [`defineHTMLPaste`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineHTMLPaste) rewrites the clipboard's `text/html` through the unified (rehype / remark) pipeline; meowdown's own clipboard (tagged `data-pm-slice`) and any paste landing in a code block are left to the default path. Going the other way, [`defineMarkdownCopy`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineMarkdownCopy) serializes copied content to Markdown for the clipboard's `text/plain` flavor. Neither is part of `defineEditorExtension`; `@meowdown/react` applies both by default, a headless host adds them explicitly.
107
110
 
108
- Pressing Enter at the end of the document's first heading (the title line) can start a fresh empty bullet on the next line instead of a plain paragraph. `defineBulletAfterHeading()` binds this. It is not part of `defineEditorExtension`; add it explicitly.
111
+ Enter at the end of the document's first heading (the title line) can start a fresh empty bullet instead of a plain paragraph: [`defineBulletAfterHeading`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineBulletAfterHeading) (`@meowdown/react`'s `bulletAfterHeading` prop). Not part of `defineEditorExtension`.
109
112
 
110
- Pressing ArrowUp on the first visual line or ArrowDown on the last, when the caret can move no further, can notify the host so it can move focus elsewhere (a previous/next note or page). `defineExitBoundaryHandler(({ direction, event }) => ...)` (or `@meowdown/react`'s `onExitBoundary` prop) fires with `direction` (`'up'` or `'down'`) and the original `KeyboardEvent`; return `false` to let the editor handle the key normally. It also fires for a selected node at the edge, and ignores arrows carrying a modifier. It is not part of `defineEditorExtension`; add it explicitly.
113
+ An arrow press that can move the caret no further can notify the host, so it can move focus elsewhere (a previous/next note or page): [`defineExitBoundaryHandler`](https://npmx.dev/package-docs/@meowdown%2Fcore#function-defineExitBoundaryHandler) (`@meowdown/react`'s `onExitBoundary` prop). Not part of `defineEditorExtension`.
111
114
 
112
115
  ## API
113
116
 
package/dist/index.d.ts CHANGED
@@ -4,8 +4,8 @@ import { defineReadonly } from "@prosekit/extensions/readonly";
4
4
  import { CodeBlockAttrs } from "@prosekit/extensions/code-block";
5
5
  import { Command, EditorState } from "@prosekit/pm/state";
6
6
  import { EditorView } from "@prosekit/pm/view";
7
- import { HorizontalRuleExtension } from "@prosekit/extensions/horizontal-rule";
8
7
  import { Mark, ProseMirrorNode } from "@prosekit/pm/model";
8
+ import { HorizontalRuleExtension } from "@prosekit/extensions/horizontal-rule";
9
9
  import { VirtualElement } from "@floating-ui/dom";
10
10
 
11
11
  //#region src/converters/check-roundtrip.d.ts
@@ -107,11 +107,21 @@ type HTMLCommentExtension = Extension<{
107
107
  declare function defineHTMLComment(): HTMLCommentExtension;
108
108
  //#endregion
109
109
  //#region src/extensions/inline-marks.d.ts
110
+ /**
111
+ * Attributes of the `mdImage` mark, derived from the image source
112
+ * `![alt](src "title")` and its optional trailing size comment
113
+ * `<!-- {"width":N,"height":M} -->`.
114
+ */
110
115
  interface MdImageAttrs {
116
+ /** The image destination, exactly as written in the source. */
111
117
  src: string;
118
+ /** The image alt text. */
112
119
  alt: string;
120
+ /** The image title, or `''` when the source has none. */
113
121
  title: string;
122
+ /** Display width in CSS pixels from the trailing comment, or `null`. */
114
123
  width: number | null;
124
+ /** Display height in CSS pixels from the trailing comment, or `null`. */
115
125
  height: number | null;
116
126
  }
117
127
  interface MdLinkTextAttrs {
@@ -340,6 +350,7 @@ declare function defineEditorExtensionImpl(): import("@prosekit/core").Union<rea
340
350
  };
341
351
  }>, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").BaseCommandsExtension, import("@prosekit/core").HistoryExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").PlainExtension, import("@prosekit/core").Extension<{
342
352
  Commands: {
353
+ insertMarkdown: [markdown: string];
343
354
  selectText: [anchor: number, head?: number | undefined];
344
355
  selectTextBetween: [$anchor: import("@prosekit/pm/model").ResolvedPos, $head: import("@prosekit/pm/model").ResolvedPos, bias?: number | undefined];
345
356
  };
@@ -487,13 +498,44 @@ declare function listenForTweetHeight(iframe: HTMLIFrameElement): () => void;
487
498
  declare function matchEmbed(src: string): EmbedDescriptor | undefined;
488
499
  //#endregion
489
500
  //#region src/extensions/exit-boundary.d.ts
501
+ /** Payload for {@link ExitBoundaryHandler}. */
490
502
  interface ExitBoundaryOptions {
503
+ /** The boundary the caret would leave: `up` at the document start, `down` at the end. */
491
504
  direction: 'up' | 'down';
505
+ /** The originating arrow key press. */
492
506
  event: KeyboardEvent;
493
507
  }
508
+ /**
509
+ * Called when an arrow key press would move the caret past the document
510
+ * boundary. Return `false` to let the editor handle the key normally; any
511
+ * other return value consumes it.
512
+ */
494
513
  type ExitBoundaryHandler = (options: ExitBoundaryOptions) => boolean | void;
514
+ /** Call `onExitBoundary` when an arrow key press would leave the document boundary. */
495
515
  declare function defineExitBoundaryHandler(onExitBoundary: ExitBoundaryHandler): PlainExtension;
496
516
  //#endregion
517
+ //#region src/extensions/file-paste.d.ts
518
+ type FilePasteHandler = (file: File) => string | undefined | Promise<string | undefined>;
519
+ type FileSaveErrorHandler = (error: unknown, file: File) => void;
520
+ /** Options for {@link defineFilePaste}. */
521
+ interface FilePasteOptions {
522
+ /**
523
+ * Persist a pasted/dropped file and return its markdown destination, or
524
+ * `undefined` to decline (nothing is inserted, but the event is consumed).
525
+ * An image (`image/*` MIME type) inserts `![](src)`; any other file inserts
526
+ * a `[name](src)` link.
527
+ */
528
+ onFilePaste?: FilePasteHandler;
529
+ /** Called when persisting a pasted/dropped file throws. Defaults to `console.error`. */
530
+ onFileSaveError?: FileSaveErrorHandler;
531
+ }
532
+ /**
533
+ * Persist pasted/dropped files via `onFilePaste` and insert the returned
534
+ * markdown destination: `![](src)` for an image, a `[name](src)` link for any
535
+ * other file. Multiple files insert one link per line, in DataTransfer order.
536
+ */
537
+ declare function defineFilePaste(options?: FilePasteOptions): PlainExtension;
538
+ //#endregion
497
539
  //#region src/extensions/html-paste.d.ts
498
540
  /**
499
541
  * Paste foreign rich-text HTML as meowdown Markdown. Rewrites the clipboard's
@@ -506,6 +548,7 @@ declare function defineExitBoundaryHandler(onExitBoundary: ExitBoundaryHandler):
506
548
  declare function defineHTMLPaste(): PlainExtension;
507
549
  //#endregion
508
550
  //#region src/extensions/image-click.d.ts
551
+ /** Payload for {@link ImageClickHandler}. */
509
552
  interface ImageClickPayload {
510
553
  /** The markdown `src`, exactly as written in `![alt](src)`. */
511
554
  src: string;
@@ -515,26 +558,25 @@ interface ImageClickPayload {
515
558
  event: MouseEvent;
516
559
  }
517
560
  type ImageClickHandler = (payload: ImageClickPayload) => void;
561
+ /**
562
+ * Call `onClick` when the user clicks a rendered image preview, with the
563
+ * image's markdown `src`, `alt`, and the originating `MouseEvent`.
564
+ */
518
565
  declare function defineImageClickHandler(onClick: ImageClickHandler): PlainExtension;
519
566
  //#endregion
520
567
  //#region src/extensions/image.d.ts
521
568
  type ImageUrlResolver = (src: string) => string | undefined;
522
- type ImagePasteHandler = (file: File) => string | undefined | Promise<string | undefined>;
523
- type ImageSaveErrorHandler = (error: unknown, file: File) => void;
569
+ /** Options for {@link defineImage}. */
524
570
  interface ImageOptions {
525
571
  /**
526
572
  * Map a markdown `src` to a displayable URL, or `undefined` to skip rendering
527
573
  * that image. Defaults to `defaultResolveImageUrl`.
528
574
  */
529
575
  resolveImageUrl?: ImageUrlResolver;
530
- /** Persist a pasted/dropped image file and return its markdown `src`, or `undefined` to decline. */
531
- onImagePaste?: ImagePasteHandler;
532
- /** Called when persisting a pasted/dropped image throws. Defaults to `console.error`. */
533
- onImageSaveError?: ImageSaveErrorHandler;
534
576
  }
535
577
  /** Show an `src` as-is when it is an http(s) URL, otherwise skip rendering it. */
536
578
  declare function defaultResolveImageUrl(src: string): string | undefined;
537
- /** Inline image/embed rendering (a mark view) plus paste/drop persistence. */
579
+ /** Inline image/embed rendering: a mark view on the `mdImage` mark. */
538
580
  declare function defineImage(options?: ImageOptions): PlainExtension;
539
581
  //#endregion
540
582
  //#region src/extensions/mark-chunk.d.ts
@@ -667,4 +709,7 @@ declare function defineWikilinkTrigger(): PlainExtension;
667
709
  */
668
710
  declare function getVirtualElementFromRange(view: EditorView, range: PositionRange): VirtualElement;
669
711
  //#endregion
670
- export { type CheckRoundTripOptions, type CodeBlockAttrs, type CodeToken, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type EmbedDescriptor, type ExitBoundaryHandler, type ExitBoundaryOptions, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkAttrs, type LinkClickHandler, type LinkClickPayload, type LinkCopyHandler, type LinkCopyPayload, type LinkEditHandler, type LinkEditOptions, type LinkHoverHandler, type LinkUnit, type MarkChunk, type MarkMode, type MarkName, type MarkdownToDocOptions, type MdImageAttrs, type MdLinkTextAttrs, type MdWikilinkAttrs, type MeowdownHTMLCommentAttrs, type NodeName, type PlaceholderOptions, type PositionRange, Priority, type RoundTripFidelity, type TagClickHandler, type TagClickPayload, type TypedEditor, type TypedMarkBuilders, type VirtualElement, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockSyntaxHighlight, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineHTMLComment, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkCommands, defineLinkEditKeymap, defineLinkHoverHandler, defineMarkMode, defineMarkdownCopy, definePlaceholder, defineReadonly, defineTagClickHandler, defineWikilinkClickHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getLinkUnitAt, getMarkBuilders, getVirtualElementFromRange, inlineTextToMarkChunks, insertLink, isSelectionInTableCell, listenForTweetHeight, markdownToDoc, matchEmbed, removeLink, updateLink, withPriority };
712
+ //#region src/extensions/spell-check.d.ts
713
+ declare function defineSpellCheckPlugin(spellCheck: boolean): import("@prosekit/core").PlainExtension;
714
+ //#endregion
715
+ export { type CheckRoundTripOptions, type CodeBlockAttrs, type CodeToken, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type EmbedDescriptor, type ExitBoundaryHandler, type ExitBoundaryOptions, type FilePasteHandler, type FilePasteOptions, type FileSaveErrorHandler, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkAttrs, type LinkClickHandler, type LinkClickPayload, type LinkCopyHandler, type LinkCopyPayload, type LinkEditHandler, type LinkEditOptions, type LinkHoverHandler, type LinkUnit, type MarkChunk, type MarkMode, type MarkName, type MarkdownToDocOptions, type MdImageAttrs, type MdLinkTextAttrs, type MdWikilinkAttrs, type MeowdownHTMLCommentAttrs, type NodeName, type PlaceholderOptions, type PositionRange, Priority, type RoundTripFidelity, type TagClickHandler, type TagClickPayload, type TypedEditor, type TypedMarkBuilders, type VirtualElement, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockSyntaxHighlight, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFilePaste, defineHTMLComment, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkCommands, defineLinkEditKeymap, defineLinkHoverHandler, defineMarkMode, defineMarkdownCopy, definePlaceholder, defineReadonly, defineSpellCheckPlugin, defineTagClickHandler, defineWikilinkClickHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getLinkUnitAt, getMarkBuilders, getVirtualElementFromRange, inlineTextToMarkChunks, insertLink, isSelectionInTableCell, listenForTweetHeight, markdownToDoc, matchEmbed, removeLink, updateLink, withPriority };
package/dist/index.js CHANGED
@@ -1,25 +1,25 @@
1
- import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineDOMEventHandler as s,defineHistory as c,defineKeymap as l,defineMarkSpec as u,defineMarkView as d,defineNodeAttr as f,defineNodeSpec as p,definePlugin as m,getMarkRange as h,getMarkType as ee,getNodeType as te,isAllSelection as ne,isAtBlockStart as re,isTextSelection as g,toggleNode as ie,union as _,unsetBlockType as ae,withPriority as oe,withPriority as v,withSkipCodeBlock as se}from"@prosekit/core";import{definePlaceholder as ce}from"@prosekit/extensions/placeholder";import{defineReadonly as le}from"@prosekit/extensions/readonly";import{isElementLike as ue,once as y}from"@ocavue/utils";import{defineBlockquote as de}from"@prosekit/extensions/blockquote";import{defineCodeBlock as fe,defineCodeBlockHighlight as pe}from"@prosekit/extensions/code-block";import{defineDoc as me}from"@prosekit/extensions/doc";import{defineGapCursor as he}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as ge}from"@prosekit/extensions/mod-click-prevention";import{defineText as _e}from"@prosekit/extensions/text";import{defineVirtualSelection as ve}from"@prosekit/extensions/virtual-selection";import{Plugin as b,PluginKey as x,Selection as ye,TextSelection as S}from"@prosekit/pm/state";import{Decoration as C,DecorationSet as w}from"@prosekit/pm/view";import{LanguageDescription as be}from"@codemirror/language";import{languages as xe}from"@codemirror/language-data";import{classHighlighter as Se,highlightTree as Ce}from"@lezer/highlight";import{createParser as we}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Te,defineHeadingInputRule as Ee,defineHeadingSpec as De}from"@prosekit/extensions/heading";import{defineHorizontalRule as Oe}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as ke,Step as Ae,StepResult as je,Transform as Me}from"@prosekit/pm/transform";import{DOMSerializer as Ne,Mark as Pe}from"@prosekit/pm/model";import{GFM as Fe,parser as Ie}from"@lezer/markdown";import{defineInputRule as Le}from"@prosekit/extensions/input-rule";import{defineListCommands as Re,defineListDropIndicator as ze,defineListKeymap as Be,defineListSerializer as Ve,defineListSpec as He,wrapInList as T}from"@prosekit/extensions/list";import{createListRenderingPlugin as Ue,createSafariInputMethodWorkaroundPlugin as We,createToggleCollapsedCommand as Ge,handleListMarkerMouseDown as Ke,unwrapListSlice as qe,wrappingListInputRule as E}from"prosemirror-flat-list";import{defineParagraphCommands as Je,defineParagraphKeymap as Ye}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Xe,defineTableCommands as Ze,defineTableDropIndicator as Qe,defineTableEditingPlugin as $e,defineTableHeaderCellSpec as et,defineTableRowSpec as tt,defineTableSpec as nt,deleteTable as rt,isCellSelection as it}from"@prosekit/extensions/table";import{closeHistory as at}from"@prosekit/pm/history";import ot from"rehype-parse";import st from"rehype-remark";import ct from"remark-gfm";import lt from"remark-stringify";import{unified as ut}from"unified";import{registerResizableHandleElement as dt,registerResizableRootElement as ft}from"@prosekit/web/resizable";import{triggerAutocomplete as pt}from"@prosekit/extensions/autocomplete";function D(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return h(i,n)}const mt=new Set([`mdMark`,`mdLinkUri`,`mdLinkTitle`]),ht=new x(`mark-mode`);function gt(e){return new b({key:ht,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>bt(e):void 0,clipboardTextSerializer:e===`show`?void 0:yt}})}function _t(e){return m(gt(e))}function vt(e){return ht.getState(e)}function yt(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(e.marks.some(e=>mt.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function bt(e){let{selection:t}=e;if(!t.empty)return w.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return w.empty;let i=h(n,ee(e.schema,`mdPack`));return i?w.create(e.doc,[C.inline(i.from,i.to,{class:`show`})]):w.empty}function O(e,t){let n=vt(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function k(e,t,n){for(let r of n){let n=D(e,t,r);if(n)return n}}function A(e,t,n){let r=k(e,t,n);return r&&r.to===t?r:void 0}function xt(e,t,n){let r=k(e,t,n);return r&&r.from===t?r:void 0}function j(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=k(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function St(e,t){return S.create(e.doc,t.from,t.to)}function Ct(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=xt(t,i.from,r);if(e)return n?.(t.tr.setSelection(St(t,e))),!0;if(A(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(S.create(t.doc,i.from+1))),!0)}return!1}let a=j(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.to))),!0):!1}}function wt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=A(t,i.from,r);return e?(n?.(t.tr.setSelection(St(t,e))),!0):!1}let a=j(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.from))),!0):!1}}function Tt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=A(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!xt(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function Et(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=xt(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!A(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}const Dt=`md-atom-selected`;function Ot(e){return new b({key:new x(`atom-mark-selection`),props:{decorations:t=>{let n=O(e,t);if(n.length===0)return;let r=j(t,n);if(r)return w.create(t.doc,[C.inline(r.from,r.to,{class:Dt})]);let{from:i,to:a,empty:o}=t.selection;if(o)return null;let s=[];return t.doc.nodesBetween(i,a,(e,t)=>{e.marks.some(e=>n.includes(e.type.name))&&s.push(C.inline(t,t+e.nodeSize,{class:Dt}))}),w.create(t.doc,s)}}})}function kt({marks:e}){return _(v(l({ArrowRight:Ct(e),ArrowLeft:wt(e),Backspace:Tt(e),Delete:Et(e)}),t.high),m(Ot(e)))}const M=new Map,At=new Map;async function jt(e){let t=M.get(e);if(t!==void 0)return t;let n=be.matchLanguageName(xe,e,!0);if(!n)return M.set(e,null),null;let r=n.support;if(!r)try{r=await n.load()}catch(t){return console.error(`[meowdown] Failed to load language "${e}":`,t),M.set(e,null),null}return M.set(e,r),r}function Mt(e,t){let n=At.get(e);if(n)return n;let r=we({parse:e=>t.language.parser.parse(e.content),highlighter:Se});return At.set(e,r),r}const Nt=e=>{let t=e.language?.trim();if(!t)return[];let n=M.get(t);return n===null?[]:n?Mt(t,n)(e):jt(t).then(()=>void 0)};function Pt(){return pe({parser:Nt,nodeTypes:[`codeBlock`]})}function Ft(e,t){let n=t.language.parser.parse(e),r=[];return Ce(n,Se,(e,t,n)=>{r.push([e,t,n])}),r}function It(e,t){let n=t.trim();if(!n)return[];let r=M.get(n);return r===null?[]:r?Ft(e,r):jt(n).then(t=>t?Ft(e,t):[])}function Lt(e,t){return(n,r)=>{if(r){let i=S.create(n.doc,e,t);r(n.tr.setSelection(i))}return!0}}function Rt(e,t,n){return(r,i)=>{if(i){let a=S.between(e,t,n);i(r.tr.setSelection(a))}return!0}}function zt(){return o({selectText:Lt,selectTextBetween:Rt})}function Bt(){return f({type:`doc`,attr:`frontmatter`,default:null})}function Vt(){return p({name:`heading`,whitespace:`pre`})}function Ht(){return f({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function Ut(){return f({type:`heading`,attr:`closingHashes`,default:null,toDOM:e=>e==null?null:[`data-closing-hashes`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-closing-hashes`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function N(e){return se(ie({type:`heading`,attrs:{level:e}}))}const Wt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function Gt(){return l({"Mod-1":N(1),"Mod-2":N(2),"Mod-3":N(3),"Mod-4":N(4),"Mod-5":N(5),"Mod-6":N(6),Backspace:Wt})}function Kt(){return _(De(),Vt(),Ht(),Ut(),Ee(),Te(),Gt())}function qt(){return f({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function Jt(){return _(Oe(),qt())}function Yt(){return p({name:`htmlComment`,group:`block`,atom:!0,selectable:!1,attrs:{content:{default:``}},toDOM:e=>[`div`,{"data-html-comment":e.attrs.content,style:`display: none`}],parseDOM:[{tag:`div[data-html-comment]`,getAttrs:e=>({content:e.getAttribute(`data-html-comment`)??``})}]})}function Xt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Zt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>Pe.fromJSON(e,t))]}var P=class e extends Ae{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return je.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new Me(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Me(e),n.addMark(i,c,t));return!1})}return je.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Qt;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new ke(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Xt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Zt(t,e)))}};Ae.jsonID(`batchSetMark`,P);const Qt=new P([]),$t=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),en=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function tn(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function nn(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!$t.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!en.test(e))return!1;return!0}function F(e){return e===32||e===9||e===10||e===13}const rn=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,an=/[\s(*_~]/;function on(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function sn(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function cn(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&sn(e,t,`)`)>sn(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const ln={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!on(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!an.test(r))return-1;let i=rn.exec(e.slice(n,e.end));if(!i)return-1;let a=cn(i[0]);return a===0||!nn(tn(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function un(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function dn(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const fn={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!un(t))break;i||=dn(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},pn={resolve:`Highlight`,mark:`HighlightMark`},mn=/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~\u{A1}\u{2010}-\u{2027}]/u,hn={defineNodes:[{name:`Highlight`},{name:`HighlightMark`}],parseInline:[{name:`Highlight`,after:`Emphasis`,parse(e,t,n){if(t!==61||e.char(n+1)!==61||e.char(n+2)===61)return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),a=/\s|^$/.test(r),o=/\s|^$/.test(i),s=mn.test(r),c=mn.test(i);return e.addDelimiter(pn,n,n+2,!o&&(!c||a||s),!a&&(!s||o||c))}}]},gn={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function _n(e){return e.end}const I=Ie.configure([Fe,fn,gn,ln,hn]),vn=I.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:_n}]});function L(e){return I.parseInline(e,0)}function R(e,t,n=[]){for(let r of e)t(r)&&n.push(r),R(r.children,t,n);return n}function yn(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const z=yn(I),bn=/^<!--\s*(\{[^}]*\})\s*-->$/,xn=/<!--\s*\{[^}]*\}\s*-->$/;function Sn(e){let t=bn.exec(e.trim());if(!t)return;let n;try{n=JSON.parse(t[1])}catch{return}if(typeof n!=`object`||!n)return;let r=Cn(n);return Object.keys(r).length>0?r:void 0}function Cn(e){let t={},{width:n,height:r}=e;return typeof n==`number`&&Number.isFinite(n)&&n>0&&(t.width=Math.round(n)),typeof r==`number`&&Number.isFinite(r)&&r>0&&(t.height=Math.round(r)),t}function wn(e){return`<!-- ${JSON.stringify(e)} -->`}function Tn(e){return e.replace(xn,``)}function En(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Dn(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function On(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view md-atom-view`;let r=document.createElement(`span`);r.className=`md-wikilink-view-preview md-atom-view-preview`,r.contentEditable=`false`,r.dataset.testid=`wikilink`,n.appendChild(r);let i=document.createElement(`span`);i.className=`md-wikilink-view-label`,i.contentEditable=`false`,i.textContent=t.display||t.target,r.appendChild(i);let a=document.createElement(`span`);return a.className=`md-wikilink-view-content md-atom-view-content`,n.appendChild(a),{dom:n,contentDOM:a,ignoreMutation:e=>!a.contains(e.target)}}}function kn(){return d({name:`mdWikilink`,constructor:On()})}const An=new Map([[z.Emphasis,`mdEm`],[z.StrongEmphasis,`mdStrong`],[z.InlineCode,`mdCode`],[z.Strikethrough,`mdDel`],[z.Highlight,`mdHighlight`],[z.EmphasisMark,`mdMark`],[z.CodeMark,`mdMark`],[z.LinkMark,`mdMark`],[z.StrikethroughMark,`mdMark`],[z.HighlightMark,`mdMark`],[z.URL,`mdLinkUri`],[z.LinkTitle,`mdLinkTitle`],[z.Hashtag,`mdTag`],[z.WikilinkMark,`mdMark`]]);function jn(e,t){let n=L(t),r=[];return B(n,[],0,t.length,t,e,r),r}function Mn(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||nn(tn(e)))return`https://${e}`}function Nn(e){return e.slice(1,-1).replaceAll(/\\(.)/g,`$1`)}function B(e,t,n,r,i,a,o){let s=n;for(let n=0;n<e.length;n++){let r=e[n];r.from>s&&V(o,s,r.from,t);let c=r.type;if(c===z.Link)Pn(r,t,i,a,o);else if(c===z.Image){let c=Fn(r,e[n+1],i);In(r,t,i,a,o,c),c&&n++,s=c?c.to:r.to;continue}else if(c===z.Wikilink)Ln(r,t,i,a,o);else if(c===z.URL){let e=Mn(i.slice(r.from,r.to)),n=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();V(o,r.from,r.to,[...t,n])}else{let e;c===z.Emphasis?e=`italic`:c===z.StrongEmphasis?e=`bold`:c===z.InlineCode?e=`code`:c===z.Strikethrough?e=`strike`:c===z.Highlight?e=`highlight`:c===z.Autolink&&(e=`autolink`);let n=e?[...t,a.mdPack.create({key:e})]:t,s=An.get(c),l=s?[...n,a[s].create()]:n;r.children.length===0?V(o,r.from,r.to,l):B(r.children,l,r.from,r.to,i,a,o)}s=r.to}s<r&&V(o,s,r,t)}function Pn(e,t,n,r,i){let a=-1,o=null,s=null,c=0;for(let t of e.children)t.type===z.LinkMark?(c++,c===2&&(a=t.from)):t.type===z.URL&&o===null?o=t:t.type===z.LinkTitle&&s===null&&(s=t);let l=o?n.slice(o.from,o.to):``,u=s?Nn(n.slice(s.from,s.to)):``,d=l?r.mdLinkText.create({href:l}):null,f=e=>a>=0&&e<a&&d!==null,p=r.mdPack.create({key:`link`,data:{href:l,title:u}}),m=[...t,p],h=e.from;for(let t of e.children){if(t.from>h){let e=f(h)?[...m,d]:m;V(i,h,t.from,e)}let e=f(t.from)?[...m,d]:m;if(t.type===z.Wikilink){Ln(t,e,n,r,i),h=t.to;continue}let a=An.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?V(i,t.from,t.to,o):B(t.children,o,t.from,t.to,n,r,i),h=t.to}h<e.to&&V(i,h,e.to,m)}function Fn(e,t,n){if(!t||t.type!==z.Comment||t.from!==e.to)return;let r=Sn(n.slice(t.from,t.to));if(r)return{magic:r,to:t.to}}function In(e,t,n,r,i,a){let o=e.children.find(e=>e.type===z.URL);if(!o){Pn(e,t,n,r,i);return}let s=e.children.filter(e=>e.type===z.LinkMark),c=e.children.find(e=>e.type===z.LinkTitle),l=n.slice(o.from,o.to),u=s.length>=2?n.slice(s[0].to,s[1].from):``,d=c?Nn(n.slice(c.from,c.to)):``,f=a?.magic.width??null,p=a?.magic.height??null,m=a?.to??e.to;V(i,e.from,m,[...t,r.mdImage.create({src:l,alt:u,title:d,width:f,height:p})])}function Ln(e,t,n,r,i){let{target:a,display:o}=Dn(n.slice(e.from,e.to));V(i,e.from,e.to,[...t,r.mdWikilink.create({target:a,display:o})])}function V(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&En(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Rn=`inline-marks-applied`,zn=new WeakMap;let Bn=0,Vn=0;function Hn(e,t,n){let r=zn.get(e);if(r?Vn++:(Bn++,r=jn(di(n),e.textContent),zn.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function Un(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function Wn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=Hn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Gn(){return new b({key:new x(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(Rn))return null;let r=Wn(n,Un(e,n));if(r.length===0)return null;let i=n.tr.step(new P(r));return i.setMeta(Rn,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Kn(e.state)),{}}})}function Kn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function qn(){return m(Gn())}function Jn(){return u({name:`mdImage`,inclusive:!1,attrs:{src:{default:``},alt:{default:``},title:{default:``},width:{default:null},height:{default:null}},toDOM:()=>[`span`,{class:`md-image`},0],parseDOM:[{tag:`span.md-image`}]})}function Yn(){return u({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function Xn(){return u({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function Zn(){return u({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function Qn(){return u({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function $n(){return u({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function er(){return u({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function tr(){return u({name:`mdLinkTitle`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-title`},0],parseDOM:[{tag:`span.md-link-title`}]})}function nr(){return u({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function rr(){return u({name:`mdHighlight`,toDOM:()=>[`mark`,0],parseDOM:[{tag:`mark`}]})}function ir(){return u({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function ar(){return u({name:`mdWikilink`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink`},0],parseDOM:[{tag:`span.md-wikilink`}]})}function or(){return u({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{},data:{default:null}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function sr(){return _(Yn(),Xn(),Zn(),Qn(),$n(),er(),tr(),nr(),rr(),ir(),ar(),Jn(),or())}function cr(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const H={em:{node:z.Emphasis,delim:`*`},strong:{node:z.StrongEmphasis,delim:`**`},code:{node:z.InlineCode,delim:"`"},del:{node:z.Strikethrough,delim:`~~`},highlight:{node:z.Highlight,delim:`==`}},lr=new Set([z.EmphasisMark,z.CodeMark,z.LinkMark,z.StrikethroughMark,z.HighlightMark]);function U(e){return[e.children[0],e.children.at(-1)]}function ur(e){let{type:t,children:n}=e;if(t===z.Emphasis||t===z.StrongEmphasis||t===z.Strikethrough||t===z.Highlight)return[n[0].to,n.at(-1).from];if(t===z.Link||t===z.Image){let e=n.find((e,t)=>t>0&&e.type===z.LinkMark);return e?[n[0].to,e.from]:null}return null}function W(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=ur(r);return i&&i[0]<=t&&n<=i[1]?W(r.children,t,n):W(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function dr(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return dr(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}function fr(e,t,n){for(;t<n&&F(e.charCodeAt(t));)t++;for(;n>t&&F(e.charCodeAt(n-1));)n--;return[t,n]}function pr(e,t,n,r){let i=R(L(e),e=>e.type===r.node||lr.has(e.type));for(let r=t;r<n;r++)if(!F(e.charCodeAt(r))&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function mr(e,t,n,r,i){let a=L(e),o=R(a,e=>e.type===r.node);return i?_r(e,o,t,n):hr(e,a,o,t,n,r)}function hr(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=W(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=U(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=gr(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function gr(e,t,n,r,i){if(i.node!==z.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(cr(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function _r(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=U(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=dr(a.children.slice(1,-1),s,c);s>t.to&&F(e.charCodeAt(s-1));)s--;for(;c<o.from&&F(e.charCodeAt(c));)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function vr(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=L(e),o=R(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=U(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return yr(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function yr(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=ur(n);return!e||t<e[0]||t>e[1]?!0:yr(n.children,t)}return!1}function G(e){return(t,n)=>{if(t.selection.empty)return br(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=fr(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:pr(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>mr(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(S.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function br(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=vr(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(S.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(S.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function xr(){return o({toggleEm:()=>G(H.em),toggleStrong:()=>G(H.strong),toggleCode:()=>G(H.code),toggleDel:()=>G(H.del),toggleHighlight:()=>G(H.highlight)})}function Sr(){return l({"Mod-b":G(H.strong),"Mod-i":G(H.em),"Mod-e":G(H.code),"Mod-Shift-x":G(H.del),"Mod-Shift-h":G(H.highlight)})}function Cr(){return _(xr(),Sr())}function wr(e,t,n){let r;return e.doc.nodesBetween(t.from,t.to,(e,i)=>(e.isText&&e.marks.some(e=>e.type.name===n)&&(r={from:Math.max(i,t.from),to:Math.min(i+e.nodeSize,t.to)}),!0)),r}function K(e,t){let n=D(e,t,`mdLinkText`),r=D(e,t,`mdPack`),i=r??n;if(!i)return;let a=r?.mark.attrs,o=n?.mark.attrs?.href??``;if(!r||a?.key!==`link`)return{unit:{from:i.from,to:i.to},href:o,title:``};let s=wr(e,i,`mdLinkUri`),c=s?s.from-2:i.to-3,l=s?s.from:i.to-1;return{unit:{from:i.from,to:i.to},label:{from:i.from+1,to:c},dest:{from:l,to:i.to-1},href:a.data.href,title:a.data.title}}function Tr(e){let t=e.trim();return t?Mn(t)??t:``}function Er(e,t){return e+(t?` "${t.replaceAll(/(["\\])/g,String.raw`\$1`)}"`:``)}function Dr(e){let{selection:t}=e,{$from:n,$to:r,empty:i}=t;if(i||!n.sameParent(r)||!g(t))return;let a=n.parent;if(!a.isTextblock||a.type.spec.code)return;let o=n.start(),[s,c]=fr(a.textContent,n.parentOffset,r.parentOffset);if(!(s>=c))return{from:o+s,to:o+c}}function Or(e={}){return(t,n)=>{let r=Er(Tr(e.href??``),e.title??``),i=Dr(t);if(!i)return!1;if(n){let{from:e,to:a}=i,o=t.tr,s=`](${r})`;o.insertText(s,a).insertText(`[`,e),n(o.setSelection(S.create(o.doc,e,a+1+s.length)).scrollIntoView())}return!0}}function kr(e){return(t,n)=>{let r=K(t,t.selection.from);if(!r?.dest)return!1;let i=Er(Tr(e.href??r.href),e.title??r.title);return n&&n(t.tr.insertText(i,r.dest.from,r.dest.to).scrollIntoView()),!0}}function Ar(){return(e,t)=>{let n=K(e,e.selection.from);return n?.label?(t&&t(e.tr.delete(n.label.to,n.unit.to).delete(n.unit.from,n.label.from).scrollIntoView()),!0):!1}}function jr(){return o({insertLink:Or,updateLink:kr,removeLink:Ar})}function Mr(e){return(t,n,r)=>{let i=K(t,t.selection.from);if(i){if(n&&r){let{unit:{from:a,to:o}}=i;n(t.tr.setSelection(S.create(t.doc,a,o)).scrollIntoView()),r.focus(),e({from:a,to:o,link:i})}return!0}let a=Dr(t);if(a){if(n&&r){let{from:i,to:o}=a;n(t.tr.setSelection(S.create(t.doc,i,o)).scrollIntoView()),r.focus(),e({from:i,to:o,link:void 0})}return!0}return!1}}function Nr(e){return l({"Mod-k":Mr(e)})}function Pr(){return f({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function Fr(){return f({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function Ir(e){return e===2||e===3||e===4}function Lr(){return f({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>Ir(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return Ir(t)?t:1}})}const Rr=[E(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),E(/^\s?(\d+)\.\s$/,({match:e})=>{let t=e[1],n=t?parseInt(t,10):void 0;return{kind:`ordered`,collapsed:!1,order:n&&n>=2&&Number.isSafeInteger(n)?n:null}}),E(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),E(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function zr(){return _(Rr.map(Le))}function Br(){return T({kind:`task`,marker:`+`})}function Vr(){return T({kind:`task`,marker:null})}function Hr(){return o({wrapInCircleTask:Br,wrapInSquareTask:Vr})}function Ur(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e);if(n.type.name===`list`)return n.attrs}return null}function Wr(){return(e,t,n)=>{let r=Ur(e),i=r?.kind===`task`&&r.marker!==`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:r?.marker??null,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:null,checked:!1},T(a)(e,t,n)}}function Gr(){return(e,t,n)=>{let r=Ur(e),i=r?.kind===`task`&&r.marker===`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:`+`,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:`+`,checked:!1},T(a)(e,t,n)}}function q(e){return e.type.name===`list`&&e.attrs.kind===`bullet`&&e.childCount>=2&&e.firstChild?.type!==e.type}const Kr=e=>{let t=e.attrs;return t.kind===`task`?{...t,checked:!t.checked}:q(e)?{...t,collapsed:!t.collapsed}:t};function qr(){return m(()=>[new b({props:{handleDOMEvents:{mousedown:(e,t)=>Ke({view:e,event:t,onListClick:Kr})}}}),Ue(),new b({props:{transformCopied:qe}}),We()])}function Jr(){return o({toggleListCollapsed:()=>Ge({isToggleable:q})})}function Yr(){return l({"Mod-Enter":Wr(),"Mod-Shift-Enter":Gr(),"Mod-.":Ge({isToggleable:q})})}function Xr(){return _(He(),qr(),Be(),Re(),Ve(),ze(),zr(),Yr(),Pr(),Fr(),Lr(),Hr(),Jr())}function Zr(){return p({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function Qr(){return _(v(Zr(),t.highest),Je(),Ye())}function $r(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e).type.name;if(n===`tableCell`||n===`tableHeaderCell`)return!0}return!1}const ei=`paragraph`;function ti(){return _(p({name:`tableCell`,content:ei}),p({name:`tableHeaderCell`,content:ei}))}const ni=(e,t)=>{let{selection:n}=e;return!it(n)||!n.isColSelection()||!n.isRowSelection()?!1:rt(e,t)};function ri(){return v(l({Backspace:ni,Delete:ni}),t.high)}function ii(){return _(nt(),tt(),Xe(),et(),ti(),$e({allowTableNodeSelection:!0}),Ze(),Qe(),ri())}function ai(){return _(Qr(),me(),Bt(),_e(),de(),Xr(),Kt(),ii(),fe(),Jt(),Yt(),sr(),Pt(),qn(),Cr(),jr(),kn(),kt({marks:[{name:`mdImage`,modes:[`hide`,`focus`,`show`]},{name:`mdWikilink`,modes:[`hide`,`focus`,`show`]}]}),a(),i(),c(),he(),ve(),ge(),zt())}function oi(){return ai()}const si=y(()=>{let e=oi().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),ci=y(()=>r(si())),li=y(()=>n(si())),ui=`meowdown_mark_builders`;function di(e){let t=e.cached[ui];if(t)return t;let r=n(e);return e.cached[ui]=r,r}const fi=`meowdown_node_builders`;function pi(e){let t=e.cached[fi];if(t)return t;let n=r(e);return e.cached[fi]=n,n}function J(e,t={}){let{nodes:n=ci(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=hi(e);i=t,n&&(a=e.slice(n))}let o=gi(n,vn.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const mi=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function hi(e){let t=mi.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function gi(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...Y(e,t,n));while(t.nextSibling());return t.parent(),r}function Y(e,t,n){switch(t.type.id){case z.ATXHeading1:return[X(e,t,n,1,!1)];case z.ATXHeading2:return[X(e,t,n,2,!1)];case z.ATXHeading3:return[X(e,t,n,3,!1)];case z.ATXHeading4:return[X(e,t,n,4,!1)];case z.ATXHeading5:return[X(e,t,n,5,!1)];case z.ATXHeading6:return[X(e,t,n,6,!1)];case z.SetextHeading1:return[X(e,t,n,1,!0)];case z.SetextHeading2:return[X(e,t,n,2,!0)];case z.Paragraph:return[$(e,t,n)];case z.CommentBlock:return[xi(e,t,n)];case z.HTMLBlock:case z.ProcessingInstructionBlock:return[$(e,t,n)];case z.Blockquote:return[Si(e,t,n)];case z.BulletList:return Ci(e,t,n,`bullet`);case z.OrderedList:return Ci(e,t,n,`ordered`);case z.FencedCode:case z.CodeBlock:return[Ti(e,t,n)];case z.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case z.Table:return[Ei(e,t,n)];case z.Task:return[$(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[$(e,t,n)])}}function X(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===z.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===z.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=Q(n.slice(o,s),Z(n,o)).trim(),d=i?_i(n,c,l)||1:null,f=!i&&c>=0&&vi(n,c,l)||null;return e.heading({level:r,setextUnderline:d,closingHashes:f},u)}function _i(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function vi(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++)e.charCodeAt(i)===35&&r++;return r}function Z(e,t){let n=e.lastIndexOf(`
3
- `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function yi(e,t){let n=0,r=0;for(;r<e.length&&n<t;){let t=e.charCodeAt(r);if(t===32)n+=1;else if(t===9)n+=4-n%4;else break;r++}return e.slice(r)}function Q(e,t){return t===0||!e.includes(`
1
+ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineDOMEventHandler as s,defineHistory as c,defineKeymap as l,defineMarkSpec as u,defineMarkView as d,defineNodeAttr as f,defineNodeSpec as p,definePlugin as m,getMarkRange as h,getMarkType as ee,getNodeType as te,isAllSelection as ne,isAtBlockStart as re,isTextSelection as g,toggleNode as ie,union as _,unsetBlockType as ae,withPriority as oe,withPriority as v,withSkipCodeBlock as se}from"@prosekit/core";import{definePlaceholder as ce}from"@prosekit/extensions/placeholder";import{defineReadonly as le}from"@prosekit/extensions/readonly";import{isElementLike as ue,once as y}from"@ocavue/utils";import{defineBlockquote as de}from"@prosekit/extensions/blockquote";import{defineCodeBlock as fe,defineCodeBlockHighlight as pe}from"@prosekit/extensions/code-block";import{defineDoc as me}from"@prosekit/extensions/doc";import{defineGapCursor as he}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as ge}from"@prosekit/extensions/mod-click-prevention";import{defineText as _e}from"@prosekit/extensions/text";import{defineVirtualSelection as ve}from"@prosekit/extensions/virtual-selection";import{Plugin as b,PluginKey as x,Selection as ye,TextSelection as S}from"@prosekit/pm/state";import{Decoration as be,DecorationSet as C}from"@prosekit/pm/view";import{LanguageDescription as xe}from"@codemirror/language";import{languages as Se}from"@codemirror/language-data";import{classHighlighter as Ce,highlightTree as we}from"@lezer/highlight";import{createParser as Te}from"prosemirror-highlight/lezer";import{DOMSerializer as Ee,Mark as De,Slice as w}from"@prosekit/pm/model";import{defineHeadingCommands as Oe,defineHeadingInputRule as ke,defineHeadingSpec as Ae}from"@prosekit/extensions/heading";import{defineHorizontalRule as je}from"@prosekit/extensions/horizontal-rule";import{AddMarkStep as Me,AddNodeMarkStep as Ne,RemoveMarkStep as Pe,RemoveNodeMarkStep as Fe,ReplaceStep as Ie,Step as Le,StepResult as Re,Transform as ze}from"@prosekit/pm/transform";import{GFM as Be,parser as Ve}from"@lezer/markdown";import{defineInputRule as He}from"@prosekit/extensions/input-rule";import{defineListCommands as Ue,defineListDropIndicator as We,defineListKeymap as Ge,defineListSerializer as Ke,defineListSpec as qe,wrapInList as T}from"@prosekit/extensions/list";import{createListRenderingPlugin as Je,createSafariInputMethodWorkaroundPlugin as Ye,createToggleCollapsedCommand as Xe,handleListMarkerMouseDown as Ze,unwrapListSlice as Qe,wrappingListInputRule as E}from"prosemirror-flat-list";import{defineParagraphCommands as $e,defineParagraphKeymap as et}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as tt,defineTableCommands as nt,defineTableDropIndicator as rt,defineTableEditingPlugin as it,defineTableHeaderCellSpec as at,defineTableRowSpec as ot,defineTableSpec as st,deleteTable as ct,isCellSelection as lt}from"@prosekit/extensions/table";import{closeHistory as ut}from"@prosekit/pm/history";import dt from"rehype-parse";import ft from"rehype-remark";import pt from"remark-gfm";import mt from"remark-stringify";import{unified as ht}from"unified";import{registerResizableHandleElement as gt,registerResizableRootElement as _t}from"@prosekit/web/resizable";import{triggerAutocomplete as vt}from"@prosekit/extensions/autocomplete";function D(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return h(i,n)}const yt=new Set([`mdMark`,`mdLinkUri`,`mdLinkTitle`]),bt=new x(`mark-mode`);function xt(e){return new b({key:bt,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>Tt(e):void 0,clipboardTextSerializer:e===`show`?void 0:wt}})}function St(e){return m(xt(e))}function Ct(e){return bt.getState(e)}function wt(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(e.marks.some(e=>yt.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function Tt(e){let{selection:t}=e;if(!t.empty)return C.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return C.empty;let i=h(n,ee(e.schema,`mdPack`));return i?C.create(e.doc,[be.inline(i.from,i.to,{class:`show`})]):C.empty}function O(e,t){let n=Ct(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function k(e,t,n){for(let r of n){let n=D(e,t,r);if(n)return n}}function A(e,t,n){let r=k(e,t,n);return r&&r.to===t?r:void 0}function j(e,t,n){let r=k(e,t,n);return r&&r.from===t?r:void 0}function M(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=k(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function Et(e,t){return S.create(e.doc,t.from,t.to)}function Dt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=j(t,i.from,r);if(e)return n?.(t.tr.setSelection(Et(t,e))),!0;if(A(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(S.create(t.doc,i.from+1))),!0)}return!1}let a=M(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.to))),!0):!1}}function Ot(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!g(t.selection))return!1;let i=t.selection;if(i.empty){let e=A(t,i.from,r);return e?(n?.(t.tr.setSelection(Et(t,e))),!0):!1}let a=M(t,r);return a?(n?.(t.tr.setSelection(S.create(t.doc,a.from))),!0):!1}}function kt(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=A(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!j(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function At(e){return(t,n)=>{let r=O(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=j(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!A(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}const jt=`md-atom-selected`;function Mt(e){return new b({key:new x(`atom-mark-selection`),props:{decorations:t=>{let n=O(e,t);if(n.length===0)return;let r=M(t,n);if(r)return C.create(t.doc,[be.inline(r.from,r.to,{class:jt})]);let{from:i,to:a,empty:o}=t.selection;if(o)return null;let s=[];return t.doc.nodesBetween(i,a,(e,t)=>{e.marks.some(e=>n.includes(e.type.name))&&s.push(be.inline(t,t+e.nodeSize,{class:jt}))}),C.create(t.doc,s)}}})}function Nt({marks:e}){return _(v(l({ArrowRight:Dt(e),ArrowLeft:Ot(e),Backspace:kt(e),Delete:At(e)}),t.high),m(Mt(e)))}const N=new Map,Pt=new Map;async function Ft(e){let t=N.get(e);if(t!==void 0)return t;let n=xe.matchLanguageName(Se,e,!0);if(!n)return N.set(e,null),null;let r=n.support;if(!r)try{r=await n.load()}catch(t){return console.error(`[meowdown] Failed to load language "${e}":`,t),N.set(e,null),null}return N.set(e,r),r}function It(e,t){let n=Pt.get(e);if(n)return n;let r=Te({parse:e=>t.language.parser.parse(e.content),highlighter:Ce});return Pt.set(e,r),r}const Lt=e=>{let t=e.language?.trim();if(!t)return[];let n=N.get(t);return n===null?[]:n?It(t,n)(e):Ft(t).then(()=>void 0)};function Rt(){return pe({parser:Lt,nodeTypes:[`codeBlock`]})}function zt(e,t){let n=t.language.parser.parse(e),r=[];return we(n,Ce,(e,t,n)=>{r.push([e,t,n])}),r}function Bt(e,t){let n=t.trim();if(!n)return[];let r=N.get(n);return r===null?[]:r?zt(e,r):Ft(n).then(t=>t?zt(e,t):[])}function Vt(e,t){return(n,r)=>{if(r){let i=S.create(n.doc,e,t);r(n.tr.setSelection(i))}return!0}}function Ht(e,t,n){return(r,i)=>{if(i){let a=S.between(e,t,n);i(r.tr.setSelection(a))}return!0}}function Ut(e){return(t,n)=>{if(!e.trim())return!1;let r=Y(e,{nodes:vi(t.schema)}).content;if(r.childCount===0)return!1;let i=r.childCount===1&&r.child(0).type.name===`paragraph`?new w(r,1,1):new w(r,0,w.maxOpen(r).openEnd);return n&&n(t.tr.replaceSelection(i).scrollIntoView()),!0}}function Wt(){return o({insertMarkdown:Ut,selectText:Vt,selectTextBetween:Ht})}function Gt(){return f({type:`doc`,attr:`frontmatter`,default:null})}function Kt(){return p({name:`heading`,whitespace:`pre`})}function qt(){return f({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function Jt(){return f({type:`heading`,attr:`closingHashes`,default:null,toDOM:e=>e==null?null:[`data-closing-hashes`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-closing-hashes`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function P(e){return se(ie({type:`heading`,attrs:{level:e}}))}const Yt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?ae()(e,t,n):!1;function Xt(){return l({"Mod-1":P(1),"Mod-2":P(2),"Mod-3":P(3),"Mod-4":P(4),"Mod-5":P(5),"Mod-6":P(6),Backspace:Yt})}function Zt(){return _(Ae(),Kt(),qt(),Jt(),ke(),Oe(),Xt())}function Qt(){return f({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function $t(){return _(je(),Qt())}function en(){return p({name:`htmlComment`,group:`block`,atom:!0,selectable:!1,attrs:{content:{default:``}},toDOM:e=>[`div`,{"data-html-comment":e.attrs.content,style:`display: none`}],parseDOM:[{tag:`div[data-html-comment]`,getAttrs:e=>({content:e.getAttribute(`data-html-comment`)??``})}]})}function tn(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function nn(e,t){let[n,r,i]=t;return[n,r,i.map(t=>De.fromJSON(e,t))]}var F=class e extends Le{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return Re.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new ze(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new ze(e),n.addMark(i,c,t));return!1})}return Re.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return rn;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Ie(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(tn)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>nn(t,e)))}};Le.jsonID(`batchSetMark`,F);const rn=new F([]),an=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),on=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function sn(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function cn(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!an.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!on.test(e))return!1;return!0}function I(e){return e===32||e===9||e===10||e===13}const ln=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,un=/[\s(*_~]/;function dn(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function fn(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function pn(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&fn(e,t,`)`)>fn(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const mn={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!dn(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!un.test(r))return-1;let i=ln.exec(e.slice(n,e.end));if(!i)return-1;let a=pn(i[0]);return a===0||!cn(sn(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function hn(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function gn(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const _n={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!hn(t))break;i||=gn(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},vn={resolve:`Highlight`,mark:`HighlightMark`},yn=/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~\u{A1}\u{2010}-\u{2027}]/u,bn={defineNodes:[{name:`Highlight`},{name:`HighlightMark`}],parseInline:[{name:`Highlight`,after:`Emphasis`,parse(e,t,n){if(t!==61||e.char(n+1)!==61||e.char(n+2)===61)return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),a=/\s|^$/.test(r),o=/\s|^$/.test(i),s=yn.test(r),c=yn.test(i);return e.addDelimiter(vn,n,n+2,!o&&(!c||a||s),!a&&(!s||o||c))}}]},xn={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function Sn(e){return e.end}const L=Ve.configure([Be,_n,xn,mn,bn]),Cn=L.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Sn}]});function R(e){return L.parseInline(e,0)}function z(e,t,n=[]){for(let r of e)t(r)&&n.push(r),z(r.children,t,n);return n}function wn(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const B=wn(L),Tn=/^<!--\s*(\{[^}]*\})\s*-->$/,En=/<!--\s*\{[^}]*\}\s*-->$/;function Dn(e){let t=Tn.exec(e.trim());if(!t)return;let n;try{n=JSON.parse(t[1])}catch{return}if(typeof n!=`object`||!n)return;let r=On(n);return Object.keys(r).length>0?r:void 0}function On(e){let t={},{width:n,height:r}=e;return typeof n==`number`&&Number.isFinite(n)&&n>0&&(t.width=Math.round(n)),typeof r==`number`&&Number.isFinite(r)&&r>0&&(t.height=Math.round(r)),t}function kn(e){return`<!-- ${JSON.stringify(e)} -->`}function An(e){return e.replace(En,``)}function jn(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Mn(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Nn(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view md-atom-view`;let r=document.createElement(`span`);r.className=`md-wikilink-view-preview md-atom-view-preview`,r.contentEditable=`false`,r.dataset.testid=`wikilink`,n.appendChild(r);let i=document.createElement(`span`);i.className=`md-wikilink-view-label`,i.contentEditable=`false`,i.textContent=t.display||t.target,r.appendChild(i);let a=document.createElement(`span`);return a.className=`md-wikilink-view-content md-atom-view-content`,n.appendChild(a),{dom:n,contentDOM:a,ignoreMutation:e=>!a.contains(e.target)}}}function Pn(){return d({name:`mdWikilink`,constructor:Nn()})}const Fn=new Map([[B.Emphasis,`mdEm`],[B.StrongEmphasis,`mdStrong`],[B.InlineCode,`mdCode`],[B.Strikethrough,`mdDel`],[B.Highlight,`mdHighlight`],[B.EmphasisMark,`mdMark`],[B.CodeMark,`mdMark`],[B.LinkMark,`mdMark`],[B.StrikethroughMark,`mdMark`],[B.HighlightMark,`mdMark`],[B.URL,`mdLinkUri`],[B.LinkTitle,`mdLinkTitle`],[B.Hashtag,`mdTag`],[B.WikilinkMark,`mdMark`]]);function In(e,t){let n=R(t),r=[];return V(n,[],0,t.length,t,e,r),r}function Ln(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||cn(sn(e)))return`https://${e}`}function Rn(e){return e.slice(1,-1).replaceAll(/\\(.)/g,`$1`)}function V(e,t,n,r,i,a,o){let s=n;for(let n=0;n<e.length;n++){let r=e[n];r.from>s&&H(o,s,r.from,t);let c=r.type;if(c===B.Link)zn(r,t,i,a,o);else if(c===B.Image){let c=Bn(r,e[n+1],i);Vn(r,t,i,a,o,c),c&&n++,s=c?c.to:r.to;continue}else if(c===B.Wikilink)Hn(r,t,i,a,o);else if(c===B.URL){let e=Ln(i.slice(r.from,r.to)),n=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();H(o,r.from,r.to,[...t,n])}else{let e;c===B.Emphasis?e=`italic`:c===B.StrongEmphasis?e=`bold`:c===B.InlineCode?e=`code`:c===B.Strikethrough?e=`strike`:c===B.Highlight?e=`highlight`:c===B.Autolink&&(e=`autolink`);let n=e?[...t,a.mdPack.create({key:e})]:t,s=Fn.get(c),l=s?[...n,a[s].create()]:n;r.children.length===0?H(o,r.from,r.to,l):V(r.children,l,r.from,r.to,i,a,o)}s=r.to}s<r&&H(o,s,r,t)}function zn(e,t,n,r,i){let a=-1,o=null,s=null,c=0;for(let t of e.children)t.type===B.LinkMark?(c++,c===2&&(a=t.from)):t.type===B.URL&&o===null?o=t:t.type===B.LinkTitle&&s===null&&(s=t);let l=o?n.slice(o.from,o.to):``,u=s?Rn(n.slice(s.from,s.to)):``,d=l?r.mdLinkText.create({href:l}):null,f=e=>a>=0&&e<a&&d!==null,p=r.mdPack.create({key:`link`,data:{href:l,title:u}}),m=[...t,p],h=e.from;for(let t of e.children){if(t.from>h){let e=f(h)?[...m,d]:m;H(i,h,t.from,e)}let e=f(t.from)?[...m,d]:m;if(t.type===B.Wikilink){Hn(t,e,n,r,i),h=t.to;continue}let a=Fn.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?H(i,t.from,t.to,o):V(t.children,o,t.from,t.to,n,r,i),h=t.to}h<e.to&&H(i,h,e.to,m)}function Bn(e,t,n){if(!t||t.type!==B.Comment||t.from!==e.to)return;let r=Dn(n.slice(t.from,t.to));if(r)return{magic:r,to:t.to}}function Vn(e,t,n,r,i,a){let o=e.children.find(e=>e.type===B.URL);if(!o){zn(e,t,n,r,i);return}let s=e.children.filter(e=>e.type===B.LinkMark),c=e.children.find(e=>e.type===B.LinkTitle),l=n.slice(o.from,o.to),u=s.length>=2?n.slice(s[0].to,s[1].from):``,d=c?Rn(n.slice(c.from,c.to)):``,f=a?.magic.width??null,p=a?.magic.height??null,m=a?.to??e.to;H(i,e.from,m,[...t,r.mdImage.create({src:l,alt:u,title:d,width:f,height:p})])}function Hn(e,t,n,r,i){let{target:a,display:o}=Mn(n.slice(e.from,e.to));H(i,e.from,e.to,[...t,r.mdWikilink.create({target:a,display:o})])}function H(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&jn(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const Un=`inline-marks-applied`,Wn=new WeakMap;let Gn=0,Kn=0;function qn(e,t,n){let r=Wn.get(e);if(r?Kn++:(Gn++,r=In(gi(n),e.textContent),Wn.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function Jn(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function Yn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=qn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Xn(){return new b({key:new x(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(Un))return null;let r=Yn(n,Jn(e,n));if(r.length===0)return null;let i=n.tr.step(new F(r));return i.setMeta(Un,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Zn(e.state)),{}}})}function Zn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function Qn(){return m(Xn())}function $n(){return u({name:`mdImage`,inclusive:!1,attrs:{src:{default:``},alt:{default:``},title:{default:``},width:{default:null},height:{default:null}},toDOM:()=>[`span`,{class:`md-image`},0],parseDOM:[{tag:`span.md-image`}]})}function er(){return u({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function tr(){return u({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function nr(){return u({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function rr(){return u({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function ir(){return u({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function ar(){return u({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function or(){return u({name:`mdLinkTitle`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-title`},0],parseDOM:[{tag:`span.md-link-title`}]})}function sr(){return u({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function cr(){return u({name:`mdHighlight`,toDOM:()=>[`mark`,0],parseDOM:[{tag:`mark`}]})}function lr(){return u({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function ur(){return u({name:`mdWikilink`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink`},0],parseDOM:[{tag:`span.md-wikilink`}]})}function dr(){return u({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{},data:{default:null}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function fr(){return _(er(),tr(),nr(),rr(),ir(),ar(),or(),sr(),cr(),lr(),ur(),$n(),dr())}function pr(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const U={em:{node:B.Emphasis,delim:`*`},strong:{node:B.StrongEmphasis,delim:`**`},code:{node:B.InlineCode,delim:"`"},del:{node:B.Strikethrough,delim:`~~`},highlight:{node:B.Highlight,delim:`==`}},mr=new Set([B.EmphasisMark,B.CodeMark,B.LinkMark,B.StrikethroughMark,B.HighlightMark]);function W(e){return[e.children[0],e.children.at(-1)]}function hr(e){let{type:t,children:n}=e;if(t===B.Emphasis||t===B.StrongEmphasis||t===B.Strikethrough||t===B.Highlight)return[n[0].to,n.at(-1).from];if(t===B.Link||t===B.Image){let e=n.find((e,t)=>t>0&&e.type===B.LinkMark);return e?[n[0].to,e.from]:null}return null}function G(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=hr(r);return i&&i[0]<=t&&n<=i[1]?G(r.children,t,n):G(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function gr(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return gr(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}function _r(e,t,n){for(;t<n&&I(e.charCodeAt(t));)t++;for(;n>t&&I(e.charCodeAt(n-1));)n--;return[t,n]}function vr(e,t,n,r){let i=z(R(e),e=>e.type===r.node||mr.has(e.type));for(let r=t;r<n;r++)if(!I(e.charCodeAt(r))&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function yr(e,t,n,r,i){let a=R(e),o=z(a,e=>e.type===r.node);return i?Sr(e,o,t,n):br(e,a,o,t,n,r)}function br(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=G(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=W(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=xr(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function xr(e,t,n,r,i){if(i.node!==B.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(pr(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function Sr(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=W(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=gr(a.children.slice(1,-1),s,c);s>t.to&&I(e.charCodeAt(s-1));)s--;for(;c<o.from&&I(e.charCodeAt(c));)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function Cr(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=R(e),o=z(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=W(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return wr(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function wr(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=hr(n);return!e||t<e[0]||t>e[1]?!0:wr(n.children,t)}return!1}function K(e){return(t,n)=>{if(t.selection.empty)return Tr(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=_r(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:vr(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>yr(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(S.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function Tr(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=Cr(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(S.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(S.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Er(){return o({toggleEm:()=>K(U.em),toggleStrong:()=>K(U.strong),toggleCode:()=>K(U.code),toggleDel:()=>K(U.del),toggleHighlight:()=>K(U.highlight)})}function Dr(){return l({"Mod-b":K(U.strong),"Mod-i":K(U.em),"Mod-e":K(U.code),"Mod-Shift-x":K(U.del),"Mod-Shift-h":K(U.highlight)})}function Or(){return _(Er(),Dr())}function kr(e,t,n){let r;return e.doc.nodesBetween(t.from,t.to,(e,i)=>(e.isText&&e.marks.some(e=>e.type.name===n)&&(r={from:Math.max(i,t.from),to:Math.min(i+e.nodeSize,t.to)}),!0)),r}function q(e,t){let n=D(e,t,`mdLinkText`),r=D(e,t,`mdPack`),i=r??n;if(!i)return;let a=r?.mark.attrs,o=n?.mark.attrs?.href??``;if(!r||a?.key!==`link`)return{unit:{from:i.from,to:i.to},href:o,title:``};let s=kr(e,i,`mdLinkUri`),c=s?s.from-2:i.to-3,l=s?s.from:i.to-1;return{unit:{from:i.from,to:i.to},label:{from:i.from+1,to:c},dest:{from:l,to:i.to-1},href:a.data.href,title:a.data.title}}function Ar(e){let t=e.trim();return t?Ln(t)??t:``}function jr(e,t){return e+(t?` "${t.replaceAll(/(["\\])/g,String.raw`\$1`)}"`:``)}function Mr(e){let{selection:t}=e,{$from:n,$to:r,empty:i}=t;if(i||!n.sameParent(r)||!g(t))return;let a=n.parent;if(!a.isTextblock||a.type.spec.code)return;let o=n.start(),[s,c]=_r(a.textContent,n.parentOffset,r.parentOffset);if(!(s>=c))return{from:o+s,to:o+c}}function Nr(e={}){return(t,n)=>{let r=jr(Ar(e.href??``),e.title??``),i=Mr(t);if(!i)return!1;if(n){let{from:e,to:a}=i,o=t.tr,s=`](${r})`;o.insertText(s,a).insertText(`[`,e),n(o.setSelection(S.create(o.doc,e,a+1+s.length)).scrollIntoView())}return!0}}function Pr(e){return(t,n)=>{let r=q(t,t.selection.from);if(!r?.dest)return!1;let i=jr(Ar(e.href??r.href),e.title??r.title);return n&&n(t.tr.insertText(i,r.dest.from,r.dest.to).scrollIntoView()),!0}}function Fr(){return(e,t)=>{let n=q(e,e.selection.from);return n?.label?(t&&t(e.tr.delete(n.label.to,n.unit.to).delete(n.unit.from,n.label.from).scrollIntoView()),!0):!1}}function Ir(){return o({insertLink:Nr,updateLink:Pr,removeLink:Fr})}function Lr(e){return(t,n,r)=>{let i=q(t,t.selection.from);if(i){if(n&&r){let{unit:{from:a,to:o}}=i;n(t.tr.setSelection(S.create(t.doc,a,o)).scrollIntoView()),r.focus(),e({from:a,to:o,link:i})}return!0}let a=Mr(t);if(a){if(n&&r){let{from:i,to:o}=a;n(t.tr.setSelection(S.create(t.doc,i,o)).scrollIntoView()),r.focus(),e({from:i,to:o,link:void 0})}return!0}return!1}}function Rr(e){return l({"Mod-k":Lr(e)})}function zr(){return f({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function Br(){return f({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function Vr(e){return e===2||e===3||e===4}function Hr(){return f({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>Vr(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return Vr(t)?t:1}})}const Ur=[E(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),E(/^\s?(\d+)\.\s$/,({match:e})=>{let t=e[1],n=t?parseInt(t,10):void 0;return{kind:`ordered`,collapsed:!1,order:n&&n>=2&&Number.isSafeInteger(n)?n:null}}),E(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),E(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function Wr(){return _(Ur.map(He))}function Gr(){return T({kind:`task`,marker:`+`})}function Kr(){return T({kind:`task`,marker:null})}function qr(){return o({wrapInCircleTask:Gr,wrapInSquareTask:Kr})}function Jr(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e);if(n.type.name===`list`)return n.attrs}return null}function Yr(){return(e,t,n)=>{let r=Jr(e),i=r?.kind===`task`&&r.marker!==`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:r?.marker??null,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:null,checked:!1},T(a)(e,t,n)}}function Xr(){return(e,t,n)=>{let r=Jr(e),i=r?.kind===`task`&&r.marker===`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:`+`,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:`+`,checked:!1},T(a)(e,t,n)}}function J(e){return e.type.name===`list`&&e.attrs.kind===`bullet`&&e.childCount>=2&&e.firstChild?.type!==e.type}const Zr=e=>{let t=e.attrs;return t.kind===`task`?{...t,checked:!t.checked}:J(e)?{...t,collapsed:!t.collapsed}:t};function Qr(){return m(()=>[new b({props:{handleDOMEvents:{mousedown:(e,t)=>Ze({view:e,event:t,onListClick:Zr})}}}),Je(),new b({props:{transformCopied:Qe}}),Ye()])}function $r(){return o({toggleListCollapsed:()=>Xe({isToggleable:J})})}function ei(){return l({"Mod-Enter":Yr(),"Mod-Shift-Enter":Xr(),"Mod-.":Xe({isToggleable:J})})}function ti(){return _(qe(),Qr(),Ge(),Ue(),Ke(),We(),Wr(),ei(),zr(),Br(),Hr(),qr(),$r())}function ni(){return p({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function ri(){return _(v(ni(),t.highest),$e(),et())}function ii(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e).type.name;if(n===`tableCell`||n===`tableHeaderCell`)return!0}return!1}const ai=`paragraph`;function oi(){return _(p({name:`tableCell`,content:ai}),p({name:`tableHeaderCell`,content:ai}))}const si=(e,t)=>{let{selection:n}=e;return!lt(n)||!n.isColSelection()||!n.isRowSelection()?!1:ct(e,t)};function ci(){return v(l({Backspace:si,Delete:si}),t.high)}function li(){return _(st(),ot(),tt(),at(),oi(),it({allowTableNodeSelection:!0}),nt(),rt(),ci())}function ui(){return _(ri(),me(),Gt(),_e(),de(),ti(),Zt(),li(),fe(),$t(),en(),fr(),Rt(),Qn(),Or(),Ir(),Pn(),Nt({marks:[{name:`mdImage`,modes:[`hide`,`focus`,`show`]},{name:`mdWikilink`,modes:[`hide`,`focus`,`show`]}]}),a(),i(),c(),he(),ve(),ge(),Wt())}function di(){return ui()}const fi=y(()=>{let e=di().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),pi=y(()=>r(fi())),mi=y(()=>n(fi())),hi=`meowdown_mark_builders`;function gi(e){let t=e.cached[hi];if(t)return t;let r=n(e);return e.cached[hi]=r,r}const _i=`meowdown_node_builders`;function vi(e){let t=e.cached[_i];if(t)return t;let n=r(e);return e.cached[_i]=n,n}function Y(e,t={}){let{nodes:n=pi(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=bi(e);i=t,n&&(a=e.slice(n))}let o=xi(n,Cn.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const yi=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function bi(e){let t=yi.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function xi(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...Si(e,t,n));while(t.nextSibling());return t.parent(),r}function Si(e,t,n){switch(t.type.id){case B.ATXHeading1:return[X(e,t,n,1,!1)];case B.ATXHeading2:return[X(e,t,n,2,!1)];case B.ATXHeading3:return[X(e,t,n,3,!1)];case B.ATXHeading4:return[X(e,t,n,4,!1)];case B.ATXHeading5:return[X(e,t,n,5,!1)];case B.ATXHeading6:return[X(e,t,n,6,!1)];case B.SetextHeading1:return[X(e,t,n,1,!0)];case B.SetextHeading2:return[X(e,t,n,2,!0)];case B.Paragraph:return[Q(e,t,n)];case B.CommentBlock:return[Oi(e,t,n)];case B.HTMLBlock:case B.ProcessingInstructionBlock:return[Q(e,t,n)];case B.Blockquote:return[ki(e,t,n)];case B.BulletList:return Ai(e,t,n,`bullet`);case B.OrderedList:return Ai(e,t,n,`ordered`);case B.FencedCode:case B.CodeBlock:return[Mi(e,t,n)];case B.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case B.Table:return[Ni(e,t,n)];case B.Task:return[Q(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[Q(e,t,n)])}}function X(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===B.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===B.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=Ei(n.slice(o,s),Z(n,o)).trim(),d=i?Ci(n,c,l)||1:null,f=!i&&c>=0&&wi(n,c,l)||null;return e.heading({level:r,setextUnderline:d,closingHashes:f},u)}function Ci(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function wi(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++)e.charCodeAt(i)===35&&r++;return r}function Z(e,t){let n=e.lastIndexOf(`
3
+ `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function Ti(e,t){let n=0,r=0;for(;r<e.length&&n<t;){let t=e.charCodeAt(r);if(t===32)n+=1;else if(t===9)n+=4-n%4;else break;r++}return e.slice(r)}function Ei(e,t){return t===0||!e.includes(`
4
4
  `)?e:e.split(`
5
- `).map((e,n)=>n===0?e:yi(e,t)).join(`
6
- `)}function bi(e,t,n){return e.paragraph(Q(t,n))}function $(e,t,n){let r=t.from,i=t.to,a=Z(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===z.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,F(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),bi(e,o,a)}return bi(e,n.slice(r,i),a)}function xi(e,t,n){let r=Z(n,t.from),i=Q(n.slice(t.from,t.to),r);return e.htmlComment({content:i})}function Si(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===z.QuoteMark)continue;r.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function Ci(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===z.ListItem&&i.push(wi(e,t,n,r));while(t.nextSibling());t.parent()}return i}function wi(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==z.ListMark&&u==null&&(u=Z(n,t.from)),t.type.id===z.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}l=Z(n,t.to);continue}if(r===`bullet`&&t.type.id===z.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===z.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}F(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(bi(e,c,Z(n,r)));continue}i.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}let d=u!=null&&l!=null?u-l:1,f=a!=null,p=!f&&r===`bullet`&&c===`+`;return e.list({kind:f?`task`:r,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:p,marker:p?null:c,taskMarker:o,markerGap:d>=2&&d<=4?d:1},i)}function Ti(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case z.CodeInfo:r=n.slice(t.from,t.to);break;case z.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function Ei(e,t,n){let r=0;if(t.firstChild()){do t.type.id===z.TableDelimiter&&(r=Di(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===z.TableHeader?i.push(Oi(e,t,n,!0,r)):a===z.TableRow&&i.push(Oi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function Di(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function Oi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===z.TableDelimiter,r=0;do if(t.type.id===z.TableDelimiter)r++;else if(t.type.id===z.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function ki(e,t={}){let n=new Ni;return t.frontmatter&&Ai(e.attrs.frontmatter,n),Pi(e,n),n.finish()}function Ai(e,t){e!==null&&(t.write(`---`),t.write(`
5
+ `).map((e,n)=>n===0?e:Ti(e,t)).join(`
6
+ `)}function Di(e,t,n){return e.paragraph(Ei(t,n))}function Q(e,t,n){let r=t.from,i=t.to,a=Z(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===B.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,I(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Di(e,o,a)}return Di(e,n.slice(r,i),a)}function Oi(e,t,n){let r=Z(n,t.from),i=Ei(n.slice(t.from,t.to),r);return e.htmlComment({content:i})}function ki(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===B.QuoteMark)continue;r.push(...Si(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function Ai(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===B.ListItem&&i.push(ji(e,t,n,r));while(t.nextSibling());t.parent()}return i}function ji(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==B.ListMark&&u==null&&(u=Z(n,t.from)),t.type.id===B.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}l=Z(n,t.to);continue}if(r===`bullet`&&t.type.id===B.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===B.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}I(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Di(e,c,Z(n,r)));continue}i.push(...Si(e,t,n))}while(t.nextSibling());t.parent()}let d=u!=null&&l!=null?u-l:1,f=a!=null,p=!f&&r===`bullet`&&c===`+`;return e.list({kind:f?`task`:r,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:p,marker:p?null:c,taskMarker:o,markerGap:d>=2&&d<=4?d:1},i)}function Mi(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case B.CodeInfo:r=n.slice(t.from,t.to);break;case B.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function Ni(e,t,n){let r=0;if(t.firstChild()){do t.type.id===B.TableDelimiter&&(r=Pi(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===B.TableHeader?i.push(Fi(e,t,n,!0,r)):a===B.TableRow&&i.push(Fi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function Pi(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function Fi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===B.TableDelimiter,r=0;do if(t.type.id===B.TableDelimiter)r++;else if(t.type.id===B.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function Ii(e,t={}){let n=new Bi;return t.frontmatter&&Li(e.attrs.frontmatter,n),Vi(e,n),n.finish()}function Li(e,t){e!==null&&(t.write(`---`),t.write(`
7
7
  `),e!==``&&(t.write(e),t.write(`
8
- `)),t.write(`---`),t.closeBlock())}const ji=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function Mi(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){Ri(e,t);let i=n.level===1?`=`:`-`;t.write(`
9
- `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(ji[n.level]??`# `),Ri(e,t);let i=n.closingHashes;i!=null&&i>0&&t.write(` `+`#`.repeat(i)),t.closeBlock()}var Ni=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
8
+ `)),t.write(`---`),t.closeBlock())}const Ri=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function zi(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){Gi(e,t);let i=n.level===1?`=`:`-`;t.write(`
9
+ `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(Ri[n.level]??`# `),Gi(e,t);let i=n.closingHashes;i!=null&&i>0&&t.write(` `+`#`.repeat(i)),t.closeBlock()}var Bi=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
10
10
  `)){this.parts.push(e);return}let t=e.split(`
11
11
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
12
12
  `,this.linePrefix),t[e]!==``&&this.parts.push(t[e])}closeBlock(){this.atLineStart&&this.pendingFirst!==null&&(this.emitDeferredBlankLine(),this.parts.push(this.pendingFirst.trimEnd()),this.pendingFirst=null,this.atLineStart=!1),this.atLineStart||this.parts.push(`
13
13
  `),this.atLineStart=!0,this.deferredBlankPrefix=this.linePrefix}suppressBlank(){this.deferredBlankPrefix=null}withPrefix(e,t,n){let r=this.linePrefix,i=this.pendingFirst;if(this.linePrefix=r+e,t!==null){let e=i??r;this.pendingFirst=e+t}n(),this.linePrefix=r,this.pendingFirst=t===null?i:null}finish(){return this.parts.join(``).replace(/\s+$/,``)+`
14
14
  `}emitDeferredBlankLine(){let e=this.deferredBlankPrefix;e!==null&&(this.parts.push(e.trimEnd(),`
15
- `),this.deferredBlankPrefix=null)}};function Pi(e,t){switch(e.type.name){case`doc`:Fi(e,t);return;case`paragraph`:Ri(e,t),t.closeBlock();return;case`heading`:Mi(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Fi(e,t)),t.closeBlock();return;case`list`:zi(e,t,Li(e));return;case`codeBlock`:Bi(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`htmlComment`:{let{content:n}=e.attrs;t.write(n),t.closeBlock();return}case`table`:Vi(e,t);return;case`text`:e.text&&t.write(e.text);return}}function Fi(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),Pi(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Ii(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),zi(e.child(r),t,s);i=o}}function Ii(e,t,n){for(let r=t;r<n;r++)if(!Li(e.child(r)))return!1;return!0}function Li(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function Ri(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function zi(e,t,n){let{kind:r,marker:i,order:a,taskMarker:o,collapsed:s,markerGap:c,checked:l}=e.attrs,u=r===`task`?i===`+`?`+`:i===`*`?`*`:`-`:s?`+`:i===`*`?`*`:`-`,d=i===`)`?`)`:`.`,f=o===`X`?`X`:`x`,p=Math.min(Math.max(c??1,1),4),m=`${r===`ordered`?`${a??1}${d}`:u}${` `.repeat(p)}`,h=r===`task`?`${m}[${l?f:` `}] `:m,ee=` `.repeat(m.length);t.withPrefix(ee,h,()=>Fi(e,t,n)),t.closeBlock()}function Bi(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(cr(r,2)+1);t.write(i),n&&t.write(n),t.write(`
15
+ `),this.deferredBlankPrefix=null)}};function Vi(e,t){switch(e.type.name){case`doc`:Hi(e,t);return;case`paragraph`:Gi(e,t),t.closeBlock();return;case`heading`:zi(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Hi(e,t)),t.closeBlock();return;case`list`:Ki(e,t,Wi(e));return;case`codeBlock`:qi(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`htmlComment`:{let{content:n}=e.attrs;t.write(n),t.closeBlock();return}case`table`:Ji(e,t);return;case`text`:e.text&&t.write(e.text);return}}function Hi(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),Vi(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Ui(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),Ki(e.child(r),t,s);i=o}}function Ui(e,t,n){for(let r=t;r<n;r++)if(!Wi(e.child(r)))return!1;return!0}function Wi(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function Gi(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function Ki(e,t,n){let{kind:r,marker:i,order:a,taskMarker:o,collapsed:s,markerGap:c,checked:l}=e.attrs,u=r===`task`?i===`+`?`+`:i===`*`?`*`:`-`:s?`+`:i===`*`?`*`:`-`,d=i===`)`?`)`:`.`,f=o===`X`?`X`:`x`,p=Math.min(Math.max(c??1,1),4),m=`${r===`ordered`?`${a??1}${d}`:u}${` `.repeat(p)}`,h=r===`task`?`${m}[${l?f:` `}] `:m,ee=` `.repeat(m.length);t.withPrefix(ee,h,()=>Hi(e,t,n)),t.closeBlock()}function qi(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(pr(r,2)+1);t.write(i),n&&t.write(n),t.write(`
16
16
  `),r&&(t.write(r),t.write(`
17
- `)),t.write(i),t.closeBlock()}function Vi(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Ui(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(Hi(s,i)),t.write(`
17
+ `)),t.write(i),t.closeBlock()}function Ji(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Xi(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(Yi(s,i)),t.write(`
18
18
  `),t.write(o);for(let e=0;e<n;e++)e!==a&&(t.write(`
19
- `),t.write(Hi(r[e],i)));t.closeBlock()}function Hi(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Ui(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
19
+ `),t.write(Yi(r[e],i)));t.closeBlock()}function Yi(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Xi(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
20
20
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
21
- `,` `)}function Wi(e){return e.replace(/\n+$/u,``)}function Gi(e){return/^[\s>]*$/u.test(e)}function Ki(e){return e.split(`
22
- `).filter(e=>!Gi(e))}function qi(e){return e.trim().replaceAll(/\s+/gu,` `)}function Ji(e,t={}){let n=ki(J(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Wi(n)===Wi(e))return`exact`;let r=Ki(e),i=Ki(n);return r.length===i.length&&r.every((e,t)=>qi(e)===qi(i[t]))?`normalizing`:`lossy`}const Yi=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=te(e.schema,`list`),i=te(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(S.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Xi(){return v(l({Enter:Yi}),t.high)}const Zi=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Qi=xe.map(e=>e.name).filter(e=>!Zi.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function $i(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const ea=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,ta=/\/status(?:es)?\/(\d+)/;function na(e){let t;try{t=new URL(e)}catch{return}if(ea.test(t.hostname))return ta.exec(t.pathname)?.[1]}const ra=e=>{let t=na(e);if(!t)return;let n=$i()?`dark`:`light`;return{kind:`tweet`,key:`tweet:${t}`,src:`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${n}&dnt=true`,title:`Tweet`,className:`md-embed md-embed-tweet`,testid:`tweet-embed`}};function ia(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=!1,r=()=>{n||(n=!0,window.removeEventListener(`message`,t),i.disconnect())},i=new MutationObserver(()=>{e.isConnected||r()});return i.observe(document.body,{childList:!0,subtree:!0}),r}const aa=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,oa=/^(?:www\.)?youtu\.be$/i,sa=/^[\w-]{11}$/;function ca(e){let t;try{t=new URL(e)}catch{return}let n=null;if(oa.test(t.hostname))n=t.pathname.slice(1);else if(aa.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!sa.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?la(r):void 0;return{videoId:n,startSeconds:i}}function la(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const ua=[e=>{let t=ca(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{kind:`youtube`,key:`youtube:${t.videoId}:${t.startSeconds??0}`,src:`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,title:`YouTube video`,className:`md-embed md-embed-youtube`,testid:`youtube-embed`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,allowFullscreen:!0}},ra];function da(e){for(let t of ua){let n=t(e);if(n)return n}}const fa=new x(`meowdown-embed-paste`);function pa(e){let t=e.trim();if(!(!t||/\s/.test(t)))return da(t)?t:void 0}function ma(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
23
- `)}function ha(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(at(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(at(i))}function ga(){return m(new b({key:fa,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ma(t,n);if(!i)return!1;let a=pa(i);return a?(ha(e,a),!0):!1}}}))}const _a=new x(`meowdown-exit-boundary`);function va(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),a=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):void 0:i;return!!(a&&ye.findFrom(a,t))}function ya(e,t){let{state:n}=e,{selection:r}=n;return g(r)&&!r.empty||ne(r)||r.$from.parent.inlineContent&&!e.endOfTextblock(t<0?`up`:`down`)?!0:va(n,t)}function ba(e){return new b({key:_a,props:{handleKeyDown:(t,n)=>{if(n.shiftKey||n.altKey||n.ctrlKey||n.metaKey)return!1;let r=n.key===`ArrowUp`?-1:n.key===`ArrowDown`?1:void 0;return!(!r||ya(t,r)||e({direction:r<0?`up`:`down`,event:n})===!1)}}})}function xa(e){return v(m(ba(e)),t.low)}const Sa=(e,t)=>{let n={type:`highlight`,children:e.all(t)};return e.patch(t,n),n},Ca=(e,t,n,r)=>{let i=e,a=n.createTracker(r),o=a.move(`==`);return o+=a.move(n.containerPhrasing(i,{...a.current(),before:o,after:`=`})),o+=a.move(`==`),o};function wa(){return ut().use(ot).use(st,{handlers:{mark:Sa}}).use(ct).use(lt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`,handlers:{highlight:Ca}}).freeze()}const Ta=y(wa);function Ea(e){return String(Ta().processSync(e))}const Da=new x(`meowdown-html-paste`);function Oa(){return m(new b({key:Da,props:{transformPastedHTML:(e,t)=>{if(e.includes(`data-pm-slice`))return e;let n=t.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return e;let r=Ea(e);if(!r.trim())return e;let i=J(r,{nodes:pi(t.state.schema)}),a=Ne.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}const ka=new x(`meowdown-image-click`);function Aa(e,t){let n=D(e,t,`mdImage`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function ja(e){return m(new b({key:ka,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-view-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Aa(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}function Ma(e){return/^https?:\/\//i.test(e)?e:void 0}function Na(e){let t=document.createElement(`iframe`);return t.src=e.src,t.title=e.title,t.className=e.className,t.dataset.testid=e.testid,t.loading=`lazy`,t.referrerPolicy=`strict-origin-when-cross-origin`,t.setAttribute(`frameborder`,`0`),e.allow&&(t.allow=e.allow),e.allowFullscreen&&(t.allowFullscreen=!0),e.kind===`tweet`&&ia(t),t}function Pa(e,t,n,r,i,a,o){let s=da(e);if(s){let e=document.createElement(`span`);return e.className=`md-image-view-preview md-atom-view-preview`,e.appendChild(Na(s)),e}let c=(i.resolveImageUrl??Ma)(e);if(!c)return;let l=document.createElement(`span`);return l.className=`md-image-view-preview md-atom-view-preview`,l.dataset.testid=`image-preview`,l.appendChild(Fa(c,t,n,r,a,o)),l}function Fa(e,t,n,r,i,a){ft(),dt();let o=document.createElement(`prosekit-resizable-root`);o.className=`md-image-resizable`,o.dataset.testid=`image-resizable`,o.setAttribute(`data-loading`,``),n!=null&&o.setAttribute(`data-width`,String(n)),r!=null&&o.setAttribute(`data-height`,String(r));let s=document.createElement(`img`);s.src=e,s.alt=t,s.draggable=!1,s.addEventListener(`load`,()=>{o.removeAttribute(`data-loading`);let{naturalWidth:e,naturalHeight:t}=s,i=e/t;if(!Number.isFinite(i)||i<=0||(o.setAttribute(`data-aspect-ratio`,String(i)),n!=null&&r!=null))return;let a=n==null?Math.min(t,500):n/i,c=n??a*i;o.setAttribute(`data-width`,String(Math.round(c))),o.setAttribute(`data-height`,String(Math.round(a)))}),s.addEventListener(`error`,()=>{o.removeAttribute(`data-loading`)}),o.appendChild(s);let c=document.createElement(`prosekit-resizable-handle`);return c.className=`md-image-resize-handle`,c.setAttribute(`position`,`bottom-right`),c.addEventListener(`click`,e=>e.stopPropagation()),o.appendChild(c),o.addEventListener(`resizeEnd`,e=>{let{width:t,height:n}=e.detail;Ia(i,a,t,n)}),o}function Ia(e,t,n,r){let i=e.posAtDOM(t,0),a=D(e.state,i,`mdImage`);if(!a)return;let o=e.state.doc.textBetween(a.from,a.to),s=Tn(o),c=a.from+s.length,l=o.slice(s.length),u=wn({...Sn(l)??{},width:Math.round(n),height:Math.round(r)});u!==l&&e.dispatch(e.state.tr.insertText(u,c,a.to))}function La(e){return(t,n)=>{let{src:r,alt:i,width:a,height:o}=t.attrs,s=document.createElement(`span`);s.className=`md-image-view md-atom-view`;let c=document.createElement(`span`);c.className=`md-image-view-content md-atom-view-content`;let l=Pa(r,i,a,o,e,n,c);return l&&(l.contentEditable=`false`,s.appendChild(l)),s.appendChild(c),{dom:s,contentDOM:c,ignoreMutation:e=>!c.contains(e.target)}}}function Ra(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const za=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Ba(e,t,n,r=za,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function Va(e){return new b({key:new x(`image-input`),props:{handlePaste:(t,n)=>{let r=Ra(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Ba(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Ra(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Ba(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Ha(e={}){return _(d({name:`mdImage`,constructor:La(e)}),v(m(Va(e)),t.high))}const Ua={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-Shift-h":`Highlight`,"Mod-k":`Link`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`,"Mod-.":`Fold or unfold a bullet`};function Wa(e){return m(new b({key:e.key,props:{handleClick:(t,n,r)=>{if(!r.target?.closest?.(e.selector))return!1;let i=e.findPayloadAt(t.state,n);return i==null?!1:(e.preventDefault&&r.preventDefault(),e.onClick(i,r),!0)}}}))}const Ga=new x(`meowdown-link-click`);function Ka(e){return Wa({key:Ga,selector:`.md-link`,preventDefault:!0,findPayloadAt:(e,t)=>K(e,t)?.href,onClick:(t,n)=>e({href:t,event:n})})}function qa(e){let t,n=(n,r)=>{let i=r.target;if(!i||!ue(i))return;let a=i.closest(e.selector);if(!a||a===t)return;let o=n.posAtDOM(a,0),s=e.findPayloadAt(n.state,o);s!=null&&(t=a,e.onHoverChange({payload:s,element:a}))},r=n=>{if(!t)return;let r=n.relatedTarget;r&&t.contains(r)||(t=void 0,e.onHoverChange(void 0))};return _(s(`mouseover`,(e,t)=>n(e,t)),s(`mouseout`,(e,t)=>r(t)))}function Ja(e){return qa({selector:`.md-link`,findPayloadAt:(e,t)=>K(e,t),onHoverChange:e})}const Ya=new x(`meowdown-markdown-copy`);function Xa(){return m(new b({key:Ya,props:{clipboardTextSerializer:(e,t)=>{let n=e.content,r;try{r=t.state.schema.topNodeType.createAndFill(void 0,n)??void 0}catch{r=void 0}return r?ki(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
21
+ `,` `)}function Zi(e){return e.replace(/\n+$/u,``)}function Qi(e){return/^[\s>]*$/u.test(e)}function $i(e){return e.split(`
22
+ `).filter(e=>!Qi(e))}function ea(e){return e.trim().replaceAll(/\s+/gu,` `)}function ta(e,t={}){let n=Ii(Y(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Zi(n)===Zi(e))return`exact`;let r=$i(e),i=$i(n);return r.length===i.length&&r.every((e,t)=>ea(e)===ea(i[t]))?`normalizing`:`lossy`}const na=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=te(e.schema,`list`),i=te(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(S.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function ra(){return v(l({Enter:na}),t.high)}const ia=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),aa=Se.map(e=>e.name).filter(e=>!ia.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function oa(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const sa=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,ca=/\/status(?:es)?\/(\d+)/;function la(e){let t;try{t=new URL(e)}catch{return}if(sa.test(t.hostname))return ca.exec(t.pathname)?.[1]}const ua=e=>{let t=la(e);if(!t)return;let n=oa()?`dark`:`light`;return{kind:`tweet`,key:`tweet:${t}`,src:`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${n}&dnt=true`,title:`Tweet`,className:`md-embed md-embed-tweet`,testid:`tweet-embed`}};function da(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=!1,r=()=>{n||(n=!0,window.removeEventListener(`message`,t),i.disconnect())},i=new MutationObserver(()=>{e.isConnected||r()});return i.observe(document.body,{childList:!0,subtree:!0}),r}const fa=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,pa=/^(?:www\.)?youtu\.be$/i,ma=/^[\w-]{11}$/;function ha(e){let t;try{t=new URL(e)}catch{return}let n=null;if(pa.test(t.hostname))n=t.pathname.slice(1);else if(fa.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!ma.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?ga(r):void 0;return{videoId:n,startSeconds:i}}function ga(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const _a=[e=>{let t=ha(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{kind:`youtube`,key:`youtube:${t.videoId}:${t.startSeconds??0}`,src:`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,title:`YouTube video`,className:`md-embed md-embed-youtube`,testid:`youtube-embed`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,allowFullscreen:!0}},ua];function va(e){for(let t of _a){let n=t(e);if(n)return n}}const ya=new x(`meowdown-embed-paste`);function ba(e){let t=e.trim();if(!(!t||/\s/.test(t)))return va(t)?t:void 0}function xa(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
23
+ `)}function Sa(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(ut(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(ut(i))}function Ca(){return m(new b({key:ya,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=xa(t,n);if(!i)return!1;let a=ba(i);return a?(Sa(e,a),!0):!1}}}))}const wa=new x(`meowdown-exit-boundary`);function Ta(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),a=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):void 0:i;return!!(a&&ye.findFrom(a,t))}function Ea(e,t){let{state:n}=e,{selection:r}=n;return g(r)&&!r.empty||ne(r)||r.$from.parent.inlineContent&&!e.endOfTextblock(t<0?`up`:`down`)?!0:Ta(n,t)}function Da(e){return new b({key:wa,props:{handleKeyDown:(t,n)=>{if(n.shiftKey||n.altKey||n.ctrlKey||n.metaKey)return!1;let r=n.key===`ArrowUp`?-1:n.key===`ArrowDown`?1:void 0;return!(!r||Ea(t,r)||e({direction:r<0?`up`:`down`,event:n})===!1)}}})}function Oa(e){return v(m(Da(e)),t.low)}function ka(e){return e.type.startsWith(`image/`)}function Aa(e,t){return ka(e)?`![](${t})`:`[${Na(e.name)}](${t})`}function ja(e,t){return!e||!t.onFilePaste?[]:Array.from(e.files)}const Ma=e=>{console.error(`[meowdown] failed to save pasted file:`,e)};function Na(e){return e.replaceAll(/[\\[\]]/g,String.raw`\$&`)}async function Pa(e,t,n,r){let{onFilePaste:i}=n;if(!i)return;let a=n.onFileSaveError??Ma,o=r,s=!1;for(let n of t){let t;try{t=await i(n)}catch(e){a(e,n);continue}if(!t||e.isDestroyed)continue;let r=Aa(n,t),c=s?`\n${r}`:r,l=o==null?e.state.tr.insertText(c):e.state.tr.insertText(c,o);e.dispatch(l),s=!0,o!=null&&(o+=c.length)}}function Fa(e){return new b({key:new x(`file-paste`),props:{handlePaste:(t,n)=>{let r=ja(n.clipboardData,e);return r.length===0?!1:(Pa(t,r,e),!0)},handleDrop:(t,n)=>{let r=ja(n.dataTransfer,e);return r.length===0?!1:(Pa(t,r,e,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Ia(e={}){return v(m(Fa(e)),t.high)}const La=(e,t)=>{let n={type:`highlight`,children:e.all(t)};return e.patch(t,n),n},Ra=(e,t,n,r)=>{let i=e,a=n.createTracker(r),o=a.move(`==`);return o+=a.move(n.containerPhrasing(i,{...a.current(),before:o,after:`=`})),o+=a.move(`==`),o};function za(){return ht().use(dt).use(ft,{handlers:{mark:La}}).use(pt).use(mt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`,handlers:{highlight:Ra}}).freeze()}const Ba=y(za);function Va(e){return String(Ba().processSync(e))}const Ha=new x(`meowdown-html-paste`);function Ua(){return m(new b({key:Ha,props:{transformPastedHTML:(e,t)=>{if(e.includes(`data-pm-slice`))return e;let n=t.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return e;let r=Va(e);if(!r.trim())return e;let i=Y(r,{nodes:vi(t.state.schema)}),a=Ee.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}const Wa=new x(`meowdown-image-click`);function Ga(e,t){let n=D(e,t,`mdImage`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Ka(e){return m(new b({key:Wa,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-view-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Ga(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}function qa(e){return/^https?:\/\//i.test(e)?e:void 0}function Ja(e){let t=document.createElement(`iframe`);return t.src=e.src,t.title=e.title,t.className=e.className,t.dataset.testid=e.testid,t.loading=`lazy`,t.referrerPolicy=`strict-origin-when-cross-origin`,t.setAttribute(`frameborder`,`0`),e.allow&&(t.allow=e.allow),e.allowFullscreen&&(t.allowFullscreen=!0),e.kind===`tweet`&&da(t),t}function Ya(e,t,n,r){if(n!=null&&r!=null){e.setAttribute(`data-width`,String(n)),e.setAttribute(`data-height`,String(r));return}let i=t.naturalWidth/t.naturalHeight;if(!Number.isFinite(i)||i<=0){n!=null&&e.setAttribute(`data-width`,String(n)),r!=null&&e.setAttribute(`data-height`,String(r));return}let a=n==null?Math.min(t.naturalHeight,500):n/i,o=n??a*i;e.setAttribute(`data-width`,String(Math.round(o))),e.setAttribute(`data-height`,String(Math.round(a)))}function Xa(e,t,n,r){let i=e.posAtDOM(t,0),a=D(e.state,i,`mdImage`);if(!a)return;let o=e.state.doc.textBetween(a.from,a.to),s=An(o),c=a.from+s.length,l=o.slice(s.length),u=kn({...Dn(l)??{},width:Math.round(n),height:Math.round(r)});u!==l&&e.dispatch(e.state.tr.insertText(u,c,a.to))}var Za=class{#e;#t;#n;#r;#i;#a;#o;constructor(e,t,n){this.#i=e.attrs,this.#n=n,this.#r=t,this.#e=document.createElement(`span`),this.#e.className=`md-image-view md-atom-view`,this.#t=document.createElement(`span`),this.#t.className=`md-image-view-content md-atom-view-content`;let r=this.#s();r&&(r.contentEditable=`false`,this.#e.appendChild(r)),this.#e.appendChild(this.#t)}get dom(){return this.#e}get contentDOM(){return this.#t}update(e){let t=e.attrs,n=this.#i;return t.src===n.src?(this.#i=t,this.#o&&t.alt!==n.alt&&(this.#o.alt=t.alt),this.#a&&this.#o&&(t.width!==n.width||t.height!==n.height)&&Ya(this.#a,this.#o,t.width,t.height),!0):!1}ignoreMutation(e){return!this.#t.contains(e.target)}#s(){let{src:e}=this.#i,t=va(e);if(t){let e=document.createElement(`span`);return e.className=`md-image-view-preview md-atom-view-preview`,e.appendChild(Ja(t)),e}let n=(this.#n.resolveImageUrl??qa)(e);if(!n)return;let r=document.createElement(`span`);return r.className=`md-image-view-preview md-atom-view-preview`,r.dataset.testid=`image-preview`,r.appendChild(this.#c(n)),r}#c(e){_t(),gt();let t=document.createElement(`prosekit-resizable-root`);t.className=`md-image-resizable`,t.dataset.testid=`image-resizable`,t.setAttribute(`data-loading`,``);let n=document.createElement(`img`);n.src=e,n.alt=this.#i.alt,n.draggable=!1,Ya(t,n,this.#i.width,this.#i.height),n.addEventListener(`load`,()=>{t.removeAttribute(`data-loading`);let e=n.naturalWidth/n.naturalHeight;!Number.isFinite(e)||e<=0||(t.setAttribute(`data-aspect-ratio`,String(e)),Ya(t,n,this.#i.width,this.#i.height))}),n.addEventListener(`error`,()=>{t.removeAttribute(`data-loading`)}),t.appendChild(n);let r=document.createElement(`prosekit-resizable-handle`);return r.className=`md-image-resize-handle`,r.setAttribute(`position`,`bottom-right`),r.addEventListener(`click`,e=>e.stopPropagation()),t.appendChild(r),t.addEventListener(`resizeEnd`,e=>{let{width:t,height:n}=e.detail;Xa(this.#r,this.#t,t,n)}),this.#a=t,this.#o=n,t}};function Qa(e={}){return d({name:`mdImage`,constructor:(t,n)=>new Za(t,n,e)})}const $a={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-Shift-h":`Highlight`,"Mod-k":`Link`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`,"Mod-.":`Fold or unfold a bullet`};function $(e){return m(new b({key:e.key,props:{handleClick:(t,n,r)=>{if(!r.target?.closest?.(e.selector))return!1;let i=e.findPayloadAt(t.state,n);return i==null?!1:(e.preventDefault&&r.preventDefault(),e.onClick(i,r),!0)}}}))}const eo=new x(`meowdown-link-click`);function to(e){return $({key:eo,selector:`.md-link`,preventDefault:!0,findPayloadAt:(e,t)=>q(e,t)?.href,onClick:(t,n)=>e({href:t,event:n})})}function no(e){let t,n=(n,r)=>{let i=r.target;if(!i||!ue(i))return;let a=i.closest(e.selector);if(!a||a===t)return;let o=n.posAtDOM(a,0),s=e.findPayloadAt(n.state,o);s!=null&&(t=a,e.onHoverChange({payload:s,element:a}))},r=n=>{if(!t)return;let r=n.relatedTarget;r&&t.contains(r)||(t=void 0,e.onHoverChange(void 0))};return _(s(`mouseover`,(e,t)=>n(e,t)),s(`mouseout`,(e,t)=>r(t)))}function ro(e){return no({selector:`.md-link`,findPayloadAt:(e,t)=>q(e,t),onHoverChange:e})}const io=new x(`meowdown-markdown-copy`);function ao(){return m(new b({key:io,props:{clipboardTextSerializer:(e,t)=>{let n=e.content,r;try{r=t.state.schema.topNodeType.createAndFill(void 0,n)??void 0}catch{r=void 0}return r?Ii(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
24
24
  `,`
25
- `)}}}))}const Za=new x(`meowdown-tag-click`);function Qa(e,t){let n=D(e,t,`mdTag`);if(!n)return;let r=e.doc.textBetween(n.from,n.to),i=r.startsWith(`#`)?r.slice(1):r;return{from:n.from,to:n.to,tag:i}}function $a(e){return Wa({key:Za,selector:`.md-tag`,preventDefault:!1,findPayloadAt:(e,t)=>Qa(e,t)?.tag,onClick:(t,n)=>e({tag:t,event:n})})}const eo=new x(`meowdown-wikilink-click`);function to(e,t){let n=D(e,t,`mdWikilink`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function no(e){return Wa({key:eo,selector:`.md-wikilink-view-preview`,preventDefault:!1,findPayloadAt:(e,t)=>to(e,t)?.target,onClick:(t,n)=>e({target:t,event:n})})}const ro=(e,t)=>{let{selection:n}=e;if(!n.empty&&!n.$head.sameParent(n.$anchor))return!1;let r=e.doc.textBetween(n.from,n.to);if(r.startsWith(`[[`))return!1;r.startsWith(`[`)&&(r=r.slice(1));let i=`[[`+r;if(t){let r=e.tr.insertText(i,n.from,n.to);r.setSelection(S.create(r.doc,n.from+i.length)),pt(r),t(r.scrollIntoView())}return!0};function io(){return l({"Mod-Shift-k":ro})}function ao(e,t){let n=()=>{let n=e.coordsAtPos(t.from),r=e.coordsAtPos(t.to),i=Math.min(n.left,r.left),a=Math.max(n.right,r.right),o=Math.min(n.top,r.top),s=Math.max(n.bottom,r.bottom);return new DOMRect(i,o,a-i,s-o)};return{getBoundingClientRect:n,getClientRects:()=>[n()]}}export{Ua as EDITOR_KEY_BINDINGS,e as Priority,Ji as checkRoundTrip,Qi as codeBlockLanguages,Ma as defaultResolveImageUrl,Xi as defineBulletAfterHeading,Pt as defineCodeBlockSyntaxHighlight,oi as defineEditorExtension,ga as defineEmbedPaste,xa as defineExitBoundaryHandler,Yt as defineHTMLComment,Oa as defineHTMLPaste,Ha as defineImage,ja as defineImageClickHandler,Ka as defineLinkClickHandler,jr as defineLinkCommands,Nr as defineLinkEditKeymap,Ja as defineLinkHoverHandler,_t as defineMarkMode,Xa as defineMarkdownCopy,ce as definePlaceholder,le as defineReadonly,$a as defineTagClickHandler,no as defineWikilinkClickHandler,io as defineWikilinkTrigger,ki as docToMarkdown,It as getCodeTokens,K as getLinkUnitAt,li as getMarkBuilders,ao as getVirtualElementFromRange,jn as inlineTextToMarkChunks,Or as insertLink,$r as isSelectionInTableCell,ia as listenForTweetHeight,J as markdownToDoc,da as matchEmbed,Ar as removeLink,kr as updateLink,oe as withPriority};
25
+ `)}}}))}const oo=new x(`meowdown-tag-click`);function so(e,t){let n=D(e,t,`mdTag`);if(!n)return;let r=e.doc.textBetween(n.from,n.to),i=r.startsWith(`#`)?r.slice(1):r;return{from:n.from,to:n.to,tag:i}}function co(e){return $({key:oo,selector:`.md-tag`,preventDefault:!1,findPayloadAt:(e,t)=>so(e,t)?.tag,onClick:(t,n)=>e({tag:t,event:n})})}const lo=new x(`meowdown-wikilink-click`);function uo(e,t){let n=D(e,t,`mdWikilink`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function fo(e){return $({key:lo,selector:`.md-wikilink-view-preview`,preventDefault:!1,findPayloadAt:(e,t)=>uo(e,t)?.target,onClick:(t,n)=>e({target:t,event:n})})}const po=(e,t)=>{let{selection:n}=e;if(!n.empty&&!n.$head.sameParent(n.$anchor))return!1;let r=e.doc.textBetween(n.from,n.to);if(r.startsWith(`[[`))return!1;r.startsWith(`[`)&&(r=r.slice(1));let i=`[[`+r;if(t){let r=e.tr.insertText(i,n.from,n.to);r.setSelection(S.create(r.doc,n.from+i.length)),vt(r),t(r.scrollIntoView())}return!0};function mo(){return l({"Mod-Shift-k":po})}function ho(e,t){let n=()=>{let n=e.coordsAtPos(t.from),r=e.coordsAtPos(t.to),i=Math.min(n.left,r.left),a=Math.max(n.right,r.right),o=Math.min(n.top,r.top),s=Math.max(n.bottom,r.bottom);return new DOMRect(i,o,a-i,s-o)};return{getBoundingClientRect:n,getClientRects:()=>[n()]}}function go(e){return e instanceof Me||e instanceof Ne||e instanceof Pe||e instanceof Fe||e instanceof F}function _o(e){for(let t of e)for(let e of t.steps)if(!go(e))return!0;return!1}function vo(e){let t,n,r=!1,i,a=()=>{let n=t&&!t.isDestroyed&&t.dom;if(!n)return;let a=e&&!r;a!==i&&(i=a,n.spellcheck=a)},o=()=>{n&&clearTimeout(n),r=!0,a(),n=setTimeout(()=>{r=!1,a()},1200)};return{pause:o,apply(e){_o(e)&&o()},view(e){return t=e,{destroy(){t=void 0}}}}}function yo(e){let t=new x(`spell-check`);return new b({key:t,state:{init:()=>vo(e),apply:(e,t)=>t},view(e){return t.getState(e.state)?.view(e)||{}},props:{handleDOMEvents:{beforeinput:e=>{t.getState(e.state)?.pause()}}},appendTransaction(e,n){t.getState(n)?.apply(e)}})}function bo(e){return m(yo(e))}export{$a as EDITOR_KEY_BINDINGS,e as Priority,ta as checkRoundTrip,aa as codeBlockLanguages,qa as defaultResolveImageUrl,ra as defineBulletAfterHeading,Rt as defineCodeBlockSyntaxHighlight,di as defineEditorExtension,Ca as defineEmbedPaste,Oa as defineExitBoundaryHandler,Ia as defineFilePaste,en as defineHTMLComment,Ua as defineHTMLPaste,Qa as defineImage,Ka as defineImageClickHandler,to as defineLinkClickHandler,Ir as defineLinkCommands,Rr as defineLinkEditKeymap,ro as defineLinkHoverHandler,St as defineMarkMode,ao as defineMarkdownCopy,ce as definePlaceholder,le as defineReadonly,bo as defineSpellCheckPlugin,co as defineTagClickHandler,fo as defineWikilinkClickHandler,mo as defineWikilinkTrigger,Ii as docToMarkdown,Bt as getCodeTokens,q as getLinkUnitAt,mi as getMarkBuilders,ho as getVirtualElementFromRange,In as inlineTextToMarkChunks,Nr as insertLink,ii as isSelectionInTableCell,da as listenForTweetHeight,Y as markdownToDoc,va as matchEmbed,Fr as removeLink,Pr as updateLink,oe as withPriority};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.30.0",
4
+ "version": "0.31.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",